【发布时间】:2013-06-12 01:50:04
【问题描述】:
我对 xslt 比较陌生,但是我很幸运地设计了一个巨大的 xml 文件。现在我被困在一个地方,无法继续。可以说xml文件的结构有点像
<xxx>
.......
.......
.......
<Field id="123" type="fld" elem="3">
<td:value passed="true"> 25 </td:value>
</Field>
.......
.......
.......
</xxx>
我目前在 Field 节点。如果我做一个<xsl:value of select="name()" />,它会给出“字段”,如果我做一个<xsl:value of select="@type" />,我会得到“fld”。但如果我执行<xsl:value of select="." />,我会得到<td:value> 内部的值,即25。
我担心的是我需要在 td:value 中获取“通过”属性的值。如果我从当前位置使用以下模板,我可以访问该属性。
<xsl:apply-templates select="*[@passed]" />
<xsl:template match="*[@passed]" >
<xsl:value-of select="@passed" />
</xsl:template>
但问题是“通过”属性可能并不总是存在,所以我需要仅使用节点名称访问 <td:value> 节点。
我试过了
<xsl:apply-templates select=".//td" />
<xsl:apply-templates select=".//td:value" />
<xsl:apply-templates select=".//*" />
<xsl:apply-templates select=".*" />
<xsl:apply-templates select="td" />
似乎没有任何效果。我如何从 Field 节点到达那个 td:value 节点?
【问题讨论】:
-
您的 XSLT 是否知道
td:命名空间? -
是的,存在一个 xmlns:td="somewebsite" 命名空间声明。