代码之家  ›  专栏  ›  技术社区  ›  Ryan Stille

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

  •  0
  • Ryan Stille  · 技术社区  · 16 年前

    我需要在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>
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Mike Tunnicliffe    16 年前

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

    .../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
    
        2
  •  2
  •   Steve Cooper    16 年前

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

    如果您真的想从测试属性中得到值“first name”,那么您就走运了——属性中的内容只是一个字符串,而不是一段XML,因此您不能对其进行xpath。如果您需要得到它,您必须使用字符串操作(例如,子字符串)来获得正确的内容。