xml - 使用 XSLT 从参数中获取确切的词?

标签 xml xslt xpath

我试图从参数中选择一些文本并将其放入一个变量中,这个变量只有纯文本。

<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"

问题是当我使用上面的代码时,它也认为 subu 是相同的,因为它找到了字符 u。这就是包含的本质。

我在这里做了一些研究:

http://www.w3.org XPATH

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/

相关文章:

python-3.x - 如何使用 Selenium 按 class_name 从大学橄榄球数据中抓取图像 url 列表

c# - c# 中不区分大小写的 XML 解析器

xml - 删除由 appendChild 添加的不需要的(空的)xmlns 属性

xslt - BizTalk 将名称值对映射到分层架构

C#:读取 XML 属性

xslt - XSLT 中的随机项

xslt - XSL : Is there an easy way to prevent widows?

sql-server - XML 查询附加适当的 ID

python - 如何使用python计算xml特定元素的数量?

PHP - 如果元素每条记录具有相似的标签,则获取正确的 XML 值