问题如下(假如名称是: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重新编辑 ]