我需要获取某些元素的值,然后根据元素添加一些文本,例如:
<elementType>a</elementType>
<otherElementType>b</otherElementType>
<elementType>c</elementType>
<elementType>d</elementType>
$doc//*[self::elementType or self::otherElementType]/string()
"a"
"b"
"c"
"d"
这会返回值,但我不知道如何获取这样的值:
"a is an elementType"
"b is an otherElementType"
"c is an elementType"
"d is an elementType"
答案 0 :(得分:0)
使用强>:
//*[self::elementType or self::otherElementType]
/concat(., ' is a ', name(), '
')
根据以下XML文档评估此表达式(提供的格式错误的片段 - 已更正):
<t>
<elementType>a</elementType>
<otherElementType>b</otherElementType>
<elementType>c</elementType>
<elementType>d</elementType>
</t>
产生了想要的正确结果:
a is a elementType
b is a otherElementType
c is a elementType
d is a elementType
答案 1 :(得分:0)
您可能希望通过基于规则的处理来查看XSLT,这似乎与您考虑需求的方式相符:
使用
<xsl:apply-templates select="*"/>
处理所有元素,然后分离模板规则以说明如何处理每种元素:
<xsl:template match="elementType">
do one thing
</xsl:template>
<xsl:template match="otherElementType">
do a different thing
</xsl:template>