-2

検証したいこの 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">

ヒントをありがとう!

4

1 に答える 1

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 としてロードします。

于 2012-04-05T15:36:49.723 に答える