使用XSL将XML属性作为id传递给HTML

时间:2012-10-26 16:01:50

标签: javascript html xml xslt

希望你能帮我指出这个问题的正确方向......

我想做什么: 我有一个XML文件,我使用XSLT转换成HTML。部分内容包括添加"隐藏"按钮。我想使用隐藏按钮从XML中删除节点,我的想法是让按钮与相关XML元素中的myId属性具有相同的id,这样可以轻松地将按钮的onClick与XML匹配要隐藏的元素。

这里有一点XML:

<sectionStatement myId="1">Awesome statement</sectionStatement>
<sectionStatement myId="2">I am a statement</sectionStatement>
<sectionStatement myId="3">I am another statement</sectionStatement>

这里有一些XSL,其中我是&#39;陷:

<xsl:for-each select="sectionStatement">
  <p><xsl:value-of select="."/><a class='showHideBtn' href='#'>Hide</a></p>
</xsl:for-each>

...所以我想最终得到3段html,每个都有一个&#34;隐藏&#34;按钮,我希望按钮具有相关的ID(1,2或3)。这相当于在标记中添加id="<xsl:value-of select='@myId'/>" ...但我已经尝试过,但它不起作用!

感谢您的建议:-) 标记

2 个答案:

答案 0 :(得分:1)

使用属性值模板<a id="{@myId}" class="showHideBtn" href="#">Hide</a>

答案 1 :(得分:0)

您可以使用xsl:attribute添加动态条件属性并将模板应用于元素。

<p>
   <xsl:attribute name="id">
    optionalText<xsl:value-of select="@myId"/>
   </xsl:attribute>
</p>

如果您已经知道该值,则转换语法更简单。

<xsl:for-each select="sectionStatement">
  <p><xsl:value-of select="."/>
    <a class='showHideBtn' href='#' id='{@myId}'>
    Hide
    </a>
  </p>
</xsl:for-each>