1

そのようなxmlファイルがあります

<doc>
 <field name="simple_meta">book</field>
 <field name="complex_meta">journal</field>
 <field name="text_date">some text</field>
</doc>

属性「name」の値に基づいて、要素テキストをパターンで検証したいと思います。つまり、属性の値が「simple_meta」の場合は「simpleRestriction」の検証を行い、「complex_meta」の場合は「complexRestriction」の検証を行います。問題は、同じノードの下に同じ名前の要素を定義できないことです。この問題を解決するのを手伝ってくれる人はいますか?

<xs:schema ......>
   <xs:simpleType name="simpleRestriction">
      <xs:restriction base="xs:string">
         <xs:maxLength value="20"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="complexRestriction">
      <xs:restriction base="xs:string">
         <xs:maxLength value="10"/>
         <xs:pattern value="([\w])*"/>
      </xs:restriction>
   </xs:simpleType>

   <xs:element name="str">
      <xs:complexType>
         <xs:simpleContent>
            <xs:extention base="simpleRestriction">
               <xs:attribute name="name">
                  <xs:simpleType>   
                     <xs:restriction base="xs:string">  
                        <xs:pattern value="simple_meta"/>
                     </xs:restriction>
                  </xs:simpleType>   
               </xs:attribute>
            </xs:extention>
         </xs:simpleContent>
      </xs:ComplexType>
   </xs:element>
   <xs:element name="str">
      <xs:complexType>
         <xs:simpleContent>
            <xs:extention base="complexRestriction">
               <xs:attribute name="name">
                  <xs:simpleType>   
                     <xs:restriction base="xs:string">  
                        <xs:pattern value="complex_meta"/>
                     </xs:restriction>
                  </xs:simpleType>   
               </xs:attribute>
            </xs:extention>
         </xs:simpleContent>
      </xs:ComplexType>
   </xs:element>
</xs:schema>
4

1 に答える 1