给定这个 XML,是否有一个 xpath 可以为我提供“test”和“name”值?

StackOverflow https://stackoverflow.com/questions/97474

  •  01-07-2019
  •  | 
  •  

我需要获取 xsl:when 标记中“test”属性的值以及 xsl:call-template 标记中“name”属性的值。这个 xpath 让我非常接近:

..../xsl:template/xsl:choose/xsl:when

但这只是返回“when”元素,而不是我需要的确切属性值。

这是我的 XML 片段:

<xsl:template match="field">
    <xsl:choose>
    <xsl:when test="@name='First Name'">
        <xsl:call-template name="handleColumn_1" /> 
    </xsl:when>
</xsl:choose>
有帮助吗?

解决方案

史蒂夫·库珀回答了第一部分。对于第二部分,您可以使用:

.../xsl:template/xsl:choose/xsl:when[@test="@name='First Name'"]/xsl:call-template/@name

这将专门匹配上面代码片段中的 xsl:when 。如果你希望它一般匹配,那么你可以使用:

.../xsl:template/xsl:choose/xsl:when/xsl:call-template/@name

其他提示

你想要 .../xsl:template/xsl:choose/xsl:when/@test

如果您想实际从测试属性中获取值“First Name”,那么您就不走运了——该属性内的内容只是一个字符串,而不是一段 xml,因此您无法对其进行 xpath 。如果您需要获取该内容,则必须使用字符串操作(例如,子字符串)来获取正确的内容

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top