これは簡単に見つけることができるはずだと思いましたが、検索した結果、これを明確に定義するとよいかもしれません。
私のXSDでは、文字列から派生した列挙型を定義しました。複合型では、デフォルト値を使用して、この列挙型を参照する属性を定義しました。
私のXSLでは、属性が明示的に設定されていない要素について、この属性のデフォルト値を表示したいと思います。
XSD:
<xs:complexType name="foo">
<xs:attribute name="bar" type="responsecodes:barType" default="default"/>
</xs:complexType>
<xs:simpleType name="barType">
<xs:restriction base="xs:string">
<xs:enumeration value="default">
<xs:annotation>
<xs:documentation xml:lang="en-us">Default bar.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="chocolate">
<xs:annotation>
<xs:documentation xml:lang="en-us">A chocolate ...bar</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
XML:
....
<foo/>
<foo bar="default"/>
<foo bar="chocolate"/>
....
XSLは次のようになると思います:(多かれ少なかれ)
<ol>
<xsl:for-each select="/foo">
<li>BarType: '<xsl:value-of select="@bar" />'</li>
</xsl:for-each>
</ol>
このスタイルのXMLファイルを表示すると、指定されていない値の「bar」属性の値が空になりますが、デフォルト値を表示(または選択)したいと思います。
今:
- BarType:''
- BarType:'デフォルト'
- BarType:'チョコレート'
望ましい:
- BarType:'デフォルト'
- BarType:'デフォルト'
- BarType:'チョコレート'
さて、これは非常に単純なはずですよね?