我有这个XSD枚举:
<xs:element name="NeedEnum" type="my:Enum" />
<xs:simpleType name="Enum">
<xs:restriction base="xs:string">
<xs:enumeration value="Enumeration 1" id="E_1" />
<xs:enumeration value="Enumeration 2" id="E_2" />
<xs:enumeration value="Enumeration 3" id="E_3" />
<xs:enumeration value="Enumeration 4" id="E_4" />
</xs:restriction>
</xs:simpleType>
我希望能够将这种简单的类型/枚举用于XSLT文件,以便能够使用这些值填充 HTML select 。
到目前为止,这是我的XSLT文件(只是表部分,而不是所有名称空间):
<div>
<select title="Enum" class="">
<xsl:for-each select="Enum">
<option>
<xsl:value-of select="./@value"/>
</option>
</xsl:for-each>
<option>
<xsl:value-of select="NeedEnum"/>
</option>
</select>
</div>
我知道我的XSLT文件已经关闭,但是我希望选择一个选项的值为枚举ID和&#34;标题&#34;是枚举的价值。我的意思是我已经阅读了几个小时,而且我找不到任何可以帮助我的东西。
我想把这样的东西链接到我的NeedEnum:
<select title="Enum" >
<option value="E_1" >Enumeration 1</option>
<option value="E_2" >Enumeration 2</option>
<option value="E_3" >Enumeration 3</option>
<option value="E_4" >Enumeration 4</option>
</select>
你能帮助我吗?
答案 0 :(得分:1)
您还没有谈到您的处理环境,但如果这是使用Saxon-EE的模式感知转换,那么当$e
绑定到(架构验证的){{1}时元素:
NeedEnum
返回简单类型Enum
的(表示)let $t := saxon:type($e)
返回其枚举方面
let $f := $t('facets')[.('class')='enumeration']
将枚举值作为字符串序列返回。
所以你可以写:
let $v := $f('values')
遗憾的是,架构中的<xsl:for-each select="saxon:type($e)('facets')[.('class')='enumeration']('values')">
<option value="E_{position()}"><xsl:value-of select="."/></option>
</xsl:for-each>
属性不可用。
(未经过测试。)