2012-04-05 52 views
-2

我正在接收这个XML文件,我想验证它。理想情况下,我不应该编辑这个XML文件。我可以用什么工具来做到这一点?我试图蟒蛇/ LXML和xmllint但其中没有允许设置的默认命名空间的XML实例:试图验证此XML实例

<?xml version="1.0" encoding="UTF-8"?> 
<CsaMscData> 
    <MscHeader Version="SV10"/> 
    <REGISTRATION_MATRIX> 
    <BASE_OBJECT_INFO> 
     <PADDING_DATA_FLAG>false</PADDING_DATA_FLAG> 
     <NO_DATA_FLAG>true</NO_DATA_FLAG> 
    </BASE_OBJECT_INFO> 
    <MATRIX>0.99768257087730505,-0.06775286248296480,0.00624799111837611,-13.94377645859601600,0.06131919890246099,0.93512585266229120,0.34896933322081974,305.74417624498307000,-0.02948632926647999,-0.34777749971495792,0.93711331602875081,35.13001338466752800,3*0.00000000000000000,1.00000000000000020</MATRIX> 
    <MATRIX_ID>1.3.12.2.1107.5.1.4.28334.4.0.4056501222952849:1.3.12.2.1107.5.1.4.28334.4.0.4056484330893172_1.3.12.2.1107.5.2.32.35065.2010021811070138240320629.0.0.0:1.3.12.2.1107.5.2.32.35065.1.20100218105150375.0.0.0</MATRIX_ID> 
    <MATRIX_TYPE>8</MATRIX_TYPE> 
    <CENTER_DS1>1064</CENTER_DS1> 
    <WIDTH_DS1>200</WIDTH_DS1> 
    <CENTER_DS2>479</CENTER_DS2> 
    <WIDTH_DS2>994</WIDTH_DS2> 
    <LUT_DS1>GrayScale08.clut</LUT_DS1> 
    <LUT_DS2>HotBody08.clut</LUT_DS2> 
    <MIX>0.50000000000000000</MIX> 
    <THRMIN_DS1>0</THRMIN_DS1> 
    <THRMAX_DS1>4095</THRMAX_DS1> 
    <THRMIN_DS2>0</THRMIN_DS2> 
    <THRMAX_DS2>4095</THRMAX_DS2> 
    </REGISTRATION_MATRIX> 
</CsaMscData> 

的XSD是(截)

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.siemens.com/med/syngo/SiemensNonImageCSAData" 
xmlns:NS="http://www.siemens.com/med/syngo/SiemensNonImageCSAData" targetNamespace="http://www.siemens.com/med/syngo/SiemensNonImageCSAData" version="1.0"> 
    <xs:annotation> 
    <xs:documentation> 
In a registration context, instances of this schema are written into the 
"Siemens Non Image IOD::CSA Non Image::CSA Data Info" (0029,xx10) attribute. 
Note: we assume all elements to be mandatory, i.e. minOccurs="1" and maxOccurs="1". 
</xs:documentation> 
    </xs:annotation> 
    <xs:element name="CsaMscData"> 

感谢任何提示!

+0

嗨malat,请不要在开放平台上发布公司相关的东西,或者至少让问题通用性不够。 – zhengtonic 2012-12-07 08:26:43

+0

-1:这是一种“修复我的代码”。我看不出这个问题对除了你以外的任何人有什么帮助。 – Alberto 2014-07-18 11:22:21

回答

1

如果不修改某些内容,则无法通过提供的XSD成功验证实例XML;您将XSD显示为具有目标命名空间http://www.siemens.com/med/syngo/SiemensNonImageCSAData;你的XML只有不合格的内容。

XSD没有elementFormDefault模式属性集;这意味着默认使用(不合格)。但是,这不适用于全局元素定义,因此CsaMscData必须在有效实例文档中限定为

如果您坚持要求解决方法而不修改XML,则必须修改XSD。我没有看到任何xs:include或xs:import,这意味着它应该很容易做到。

手动从XSD中删除xmlns和targetNamespace;验证XSD以确保它仍然有效。然后用它来验证你的XML。如果全部正常工作,则使用修改的XSD或对该航班进行修改:在运行时将其加载为XML,像手动一样修改它,将其写回,然后将其加载为XSD进行验证。