次のようなXML Schema文書を作成。PatternTestタイプはPatternTestBaseタイプを
派生させているが、それぞれxsd:patternにより文字列パターンによる制限を行っている。
<?xml version="1.0" encoding="Shift_JIS"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="PatternTest" type="PatternTestType"/>
<xsd:complexType name="PatternTestType">
<xsd:sequence>
<xsd:element name="Pattern" type="PatternType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="PatternTypeBase">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-g]+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PatternType">
<xsd:restriction base="PatternTypeBase">
<xsd:pattern value="[a-h]+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
このスキーマ文書を用いて次のXML文書を検証すると、エラーになる。
<?xml version="1.0" encoding="Shift_JIS"?>
<PatternTest>
<Pattern>abcdefg</Pattern>
<-- ここでエラー -->
<Pattern>abcdefgh</Pattern>
</PatternTest>
どうもパターンで制限をしたタイプからのパターンの派生はできないらしい。
一番もととなる型のパターン制限が有効になるようだ。
【XMLパーサ】Xerces-J 2.9.0
【OS】Windows XP Professional Edition + SP2
派生させているが、それぞれxsd:patternにより文字列パターンによる制限を行っている。
<?xml version="1.0" encoding="Shift_JIS"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="PatternTest" type="PatternTestType"/>
<xsd:complexType name="PatternTestType">
<xsd:sequence>
<xsd:element name="Pattern" type="PatternType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="PatternTypeBase">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-g]+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PatternType">
<xsd:restriction base="PatternTypeBase">
<xsd:pattern value="[a-h]+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
このスキーマ文書を用いて次のXML文書を検証すると、エラーになる。
<?xml version="1.0" encoding="Shift_JIS"?>
<PatternTest>
<Pattern>abcdefg</Pattern>
<-- ここでエラー -->
<Pattern>abcdefgh</Pattern>
</PatternTest>
どうもパターンで制限をしたタイプからのパターンの派生はできないらしい。
一番もととなる型のパターン制限が有効になるようだ。
【XMLパーサ】Xerces-J 2.9.0
【OS】Windows XP Professional Edition + SP2