我试图从参数中选择一些文本并将其放入一个变量中,这个变量只有纯文本。
<xsl:variable name="Underline">
<xsl:choose>
<xsl:when test="contains($style-name, 'u')">true</xsl:when>
</xsl:choose>
</xsl:variable>
此参数 ($style-name) 的值可以是strike、em、u、strong、sub 和 sup 中的任意值或它们的组合。
$style-name: "strike em u sub"
问题是当我使用上面的代码时,它也认为 sub 和 u 是相同的,因为它找到了字符 u。这就是包含的本质。
我在这里做了一些研究:
XPath to return only elements containing the text, and not its parents
但是我找不到适合我的东西。如果您需要更多信息,请告诉我。
这也只是 XSLT 1.0。我使用的是 Visual Studio 2012,我不是 100% 确定引擎是什么。
我可以提供输入,但这超出了问题的范围,它只是一个子问题。
最佳答案
这实际上不需要标记化。它应该像这样简单:
<xsl:variable name="Underline">
<xsl:if test="contains(concat(' ',$style-name,' '),' u ')">true</xsl:if>
</xsl:variable>
甚至更好
<xsl:variable name="Underline">
<xsl:if test="contains(concat(' ',normalize-space($style-name),' '),' u ')">true</xsl:if>
</xsl:variable>
也就是说,如果保证您有一个空格分隔的列表。
关于xml - 使用 XSLT 从参数中获取确切的词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978790/