Is there an XSLT name-of element?

后端 未结 5 1693
暖寄归人
暖寄归人 2020-11-28 23:47

In XSLT there is the


to get the value of an element, but is there something to select the tag-n

相关标签:
5条回答
  • 2020-11-28 23:52

    Nobody did point the subtle difference in the semantics of the functions name() and local-name().

    • name(someNode) returns the full name of the node, and that includes the prefix and colon in case the node is an element or an attribute.
    • local-name(someNode) returns only the local name of the node, and that doesn't include the prefix and colon in case the node is an element or an attribute.

    Therefore, in situations where a name may belong to two different namespaces, one must use the name() function in order for these names to be still distinguished.

    And, BTW, it is possible to specify both functions without any argument:

    name() is an abbreviation for name(.)

    local-name() is an abbreviation for local-name(.)

    Finally, do remember that not only elements and attributes have names, these two functions can also be used on PIs and on these they are identical).

    0 讨论(0)
  • 2020-11-28 23:57

    For those interested, there is no:

    <xsl:tag-of select="."/>
    

    However you can re-create the tag/element by going:

    <xsl:element name="{local-name()}">
      <xsl:value-of select="substring(.,1,3)"/>
    </xsl:element>
    

    This is useful in an xslt template that for example handles formatting data values for lots of different elements. When you don't know the name of the element being worked on and you can still output the same element, and modify the value if need be.

    0 讨论(0)
  • 2020-11-29 00:01

    This will give you the current element name (tag name)

    <xsl:value-of select ="name(.)"/>
    

    OP-Edit: This will also do the trick:

    <xsl:value-of select ="local-name()"/>
    
    0 讨论(0)
  • 2020-11-29 00:01
    <xsl:for-each select="person">
      <xsl:for-each select="*">
        <xsl:value-of select="local-name()"/> : <xsl:value-of select="."/>
      </xsl:for-each>  
    </xsl:for-each>
    
    0 讨论(0)
  • 2020-11-29 00:05
    <xsl:value-of select="name(.)" /> : <xsl:value-of select="."/>
    
    0 讨论(0)
提交回复
热议问题