我正在接收这个我要验证的XML文件。理想情况下,我根本不应该编辑这个XML文件。我可以使用什么工具来做到这一点?我尝试了python / lxml和xmllint,但没有一个允许为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 :(得分: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进行验证。