XSL枚举在XSLT文件中使用

时间:2018-03-15 17:03:12

标签: xslt xsd

我有这个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>

你能帮助我吗?

1 个答案:

答案 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> 属性不可用。

(未经过测试。)