尝试根据其子元素之一的值选择元素
我正试图做同样的事情,但是没有用。
XML:
<customize>
<name>InstallationZeitfenster</name>
<dataType rvcd="2">Alphanumerisch</dataType>
<value>Nachmittag</value>
</customize>
<customize>
<name>InstallationGeplant</name>
<dataType rvcd="3">Datum</dataType>
<value>06.11.2019</value>
</customize>
</customize>
我想要“值”节点的文本,其中的节点名称为“ InstallationGeplant”。那就是我试图做的。
<xsl:value-of select="/*[local-name()='deviceManagement']/*[local-name()='deviceLocation']/*[local-name()='deviceInstallation']/*[local-name()='deviceInfo']/*[local-name()='device']/*[local-name()='customize']/*[local-name()='customize']/*[local-name()='name']/text() = 'InstallationGeplant'/*[local-name()='value']"/>
有人知道我应该怎么做吗?
由于名称空间的原因,我必须像这样访问节点。 感谢您的帮助
答案 0 :(得分:0)
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:value-of select="descendant::value[preceding-sibling::name[1]='InstallationGeplant']"/>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
您可以简单地做:
<xsl:value-of select="customize[name='InstallationGeplant']/value"/>
这来自父customize
的上下文;您的尝试表明该结构比您显示的要深。
由于名称空间的原因,必须像这样访问节点
不,您不必也不应该。参见:XSLT Transform doesn't work until I remove root node