2011-06-19 4 views
7

それは可能ですか?XMLスキーマに含まれる子の数を示す属性を持つ要素を指定するにはどうすればよいですか?

  • 私はそれが正規表現に基づいて制限を行うことが可能です知っているが、それは
  • それではない、私はXPathにより算出し、外部キーとしての属性を宣言することが可能です知っているが、それはユニークである必要がありそうです

Exemple:

<root children="2"> 
    <child /> 
    <child /> 
</root> 

答えて

5

W3Cインスタンスに基づいて属性値を制約する能力を持っていないスキーマ1.0 資料。

Schematronは、ドキュメントがそのようなカスタム検証シナリオに準拠していることを検証するための優れたツールです。例えば

:1.1は現在、サクソンとXercesの中で実装されている

<xs:element name="root"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="child" maxOccurs="unbounded"/> 
    </xs:sequence> 
    <xs:attribute name="children" type="xs:integer"/> 
    </xs:complexType> 
    <xs:assert test="@children = count(child)"/> 
</xs:element> 

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://purl.oclc.org/dsdl/schematron"> 
    <pattern> 
     <rule context="root[@children]"> 
      <assert 
       id="children-value" 
       test="@children=count(child)" 
       flag="error"> 
       The root/@children value must be equal to the number of child elements. 
       </assert> 
      </rule> 
    </pattern> 
</schema> 
+0

これは私が思ったことです、ありがとう。 – sebastien

6

XSD 1.1を使用すると、制約のこの種を表現することができます。

関連する問題