0

我需要获取一些元素的值,然后需要根据元素添加一些文本,例如:

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

2 回答 2

0

使用

//*[self::elementType or self::otherElementType]
              /concat(., ' is a ', name(), '&#xA;')

当针对以下 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
于 2012-09-03T04:05:18.103 回答
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>
于 2012-09-03T07:57:56.910 回答