簡體   English   中英

基於父元素的XML XSD驗證?

[英]XML XSD validation based on parent element?

是否可以“有條件”驗證XSD文件中的XML節點? 也就是說,是否基於父節點名稱進行驗證?

例如:

<?xml version="1.0"?>
<rootNode>
  <parentA>
    <value>Some text</value>
  </parentA>
  <parentB>
    <value>Some text</value>
  </parentB>  
</rootNode>

parentA使用的value驗證如下所示:

<xs:element name="value">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
      <xs:minLength value="0"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

parentB使用的value驗證將有所不同:

<xs:element name="value">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="4"/>
      <xs:minLength value="0"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

是的,即使在XSD 1.0中,本地聲明的元素的類型也可以根據父元素提供的上下文而有所不同:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="rootNode">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ParentA">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="value">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="10"/>
                    <xs:minLength value="0"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="ParentB">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="value">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="4"/>
                    <xs:minLength value="0"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

value內元件ParentA具有不同的類型的value內元件ParentB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM