0

まず、私は xml/xsd にまったく慣れていないので、ご容赦ください。
このように見える私のxmlファイルのノード...

<root>
  <XmlDetails>
    <XmlName>SomeName</XmlName>
    ....
    <XmlPath>path/SomeName</XmlPath>
    ...
  </XmlDetails>
  <XmlDetails>
    ...
</root

XmlPath にはプロローグ文字列 ("path/" など) が含まれ、その後にそのノードの XmlName 値が続きます。これを xsd ファイル内で強制する方法はありますか?

ユニオンを見ましたが、XmlName 要素の値を取得する方法がわかりません。

<xs:element name="XmlPath"
  <xs:simpleType>
    <xs:union memberTypes="prolog epilog" />
  </xs:simpleType>
</xs:element>

<xs:simpleType name="prolog">
  <xs:restriction base="xs:string">
    <xs:enumeration value="path/"/>
    <xs:enumeration value="path2/"/>
    <xs:enumeration value="path3/"/>
  </xs:restriction>
</xs:simpleType> 

<xs:??? name="epilog">
  How to get the value of XmlName
</xs:??>

私がやろうとしていることは xsd ファイル内でも可能ですか?

4

1 に答える 1

0

検証中の XML ファイル内の他の要素のコンテンツに基づいて、XSD にルールを設定することはできません。

XmlPathできる最善の方法は、次のようなコンテンツの正規表現ルールを指定することです。

<xs:element name="XmlPath">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="\w+/\w+"/>
    </xs:restriction>
    </xs:simpleType>
</xs:element>

(の内容はXmlPath、単語の後に「/」が続き、その後に別の単語が続く必要があります....)

于 2012-08-28T15:19:29.060 に答える