• 4508阅读
  • 1回复

急求 XML的一个问题[已解决] [复制链接]

上一主题 下一主题
离线xlttap
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-30
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
问题如下(假如名称是:gth.xml , gth.xsd):
1. 如果gth.xml和gth.xsd文件在同一个目录下,schemaLocation这样写是对的,用XMLSpy验证没有问题
<?xml version="1.0" encoding="ISO-8859-1"?>
<GtHorizon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geotech.cn/gth.xsd" xsi:schemaLocation="http://www.geotech.cn/gth.xsd  gth.xsd">
    <StartXLine>1021</StartXLine>
    <EndXLine>1791</EndXLine>
    <XLineIncrement>1</XLineIncrement>
    <StartInLine>2017</StartInLine>
    <EndInLine>3247</EndInLine>
    <InLineIncrement>1</InLineIncrement>
    <NoData>999999988484154753734934528.000000</NoData>
    <LowerValue>2061.518311</LowerValue>
    <UpperValue>2851.266357</UpperValue>
    <Description> SC_t3X3 </Description>
</GtHorizon>

2. 如果gth.xml和gth.xsd文件在不同一个目录下(假如gth.xsd是在E:\xsd\gth.xsd;而gth.xml是在F:\xml\gth.xml),如果在gth.xml中用绝对路径写schemaLocation是对的,XMLSpy验证没有问题如:
<?xml version="1.0" encoding="ISO-8859-1"?>
<GtHorizon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geotech.cn/gth.xsd" xsi:schemaLocation="http://www.geotech.cn/gth.xsd  E:\xsd\gth.xsd">
    <StartXLine>1021</StartXLine>
    <EndXLine>1791</EndXLine>
    <XLineIncrement>1</XLineIncrement>
    <StartInLine>2017</StartInLine>
    <EndInLine>3247</EndInLine>
    <InLineIncrement>1</InLineIncrement>
    <NoData>999999988484154753734934528.000000</NoData>
    <LowerValue>2061.518311</LowerValue>
    <UpperValue>2851.266357</UpperValue>
    <Description> SC_t3X3 </Description>
</GtHorizon>
3. 问题来了,由于需求,我把所有的xsd文件都放在一个目录中,如E:\xsd,然后在系统环境变量中设置XSDPATH=E:\xsd,再把上面2中schemaLotion的绝对路径改成XSDPATH代替,如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<GtHorizon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.geotech.cn/gth.xsd" xsi:schemaLocation="http://www.geotech.cn/gth.xsd  %XSDPATH%\gth.xsd">
    <StartXLine>1021</StartXLine>
    <EndXLine>1791</EndXLine>
    <XLineIncrement>1</XLineIncrement>
    <StartInLine>2017</StartInLine>
    <EndInLine>3247</EndInLine>
    <InLineIncrement>1</InLineIncrement>
    <NoData>999999988484154753734934528.000000</NoData>
    <LowerValue>2061.518311</LowerValue>
    <UpperValue>2851.266357</UpperValue>
    <Description> SC_t3X3 </Description>
</GtHorizon>
改了之后,XMLSpy验证错误,它没有把XSDPATH解析成E:\xsd,而在gth.xml的目录下找XSDPATH,提示错误:无法打开:F:\xml\%XSDPATH%\gth.xsd
请高人指教啊。


只要在写XML文件时,传参数替代就行了。当然,schemaLoaction可以不写,因为在验证前已经把xsd的路径传了进去。
[ 此帖被xlttap在2010-09-03 17:31重新编辑 ]
我简单我快乐
离线xlttap

只看该作者 1楼 发表于: 2010-08-30
自己顶,看来是没有一个人知道啊。 这个很难吗???????
我简单我快乐
快速回复
限100 字节
 
上一个 下一个