Xml 使用XSLT生成特定元素的XPath
我需要帮助创建一个XSL,该XSL将从XML为其生成XPATH 输入到XSL的XML如下所示。Element标记将包含必须获取Xpath的元素的名称。SampleXML将包含必须从中获取XPath的XML:Xml 使用XSLT生成特定元素的XPath,xml,xslt,xpath,Xml,Xslt,Xpath,我需要帮助创建一个XSL,该XSL将从XML为其生成XPATH 输入到XSL的XML如下所示。Element标记将包含必须获取Xpath的元素的名称。SampleXML将包含必须从中获取XPath的XML: <XMLInput> <Element>FirstName</Element> <SampleXML> <Member> <MemberInfo> <FirstNam
<XMLInput>
<Element>FirstName</Element>
<SampleXML>
<Member>
<MemberInfo>
<FirstName>John</FirstName>
<MiddleName>M</MiddleName>
<LastName>Doe</LastName>
</MemberInfo>
<MemberAddress>
<State>NY</State>
<Country>USA</Country>
</MemberAddress>
</Member>
</SampleXML>
这里有一种方式可以让你看到它: XSLT1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/XMLInput">
<xsl:for-each select="//*[name()=current()/Element]">
<!-- generate a path up to - but not including - ancestor SampleXML -->
<xsl:for-each select="ancestor-or-self::*[not(descendant-or-self::SampleXML)]">
<xsl:text>/</xsl:text>
<xsl:value-of select="name()"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
/
您可能需要添加一个分隔符,以防有多个同名元素
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/XMLInput">
<xsl:for-each select="//*[name()=current()/Element]">
<!-- generate a path up to - but not including - ancestor SampleXML -->
<xsl:for-each select="ancestor-or-self::*[not(descendant-or-self::SampleXML)]">
<xsl:text>/</xsl:text>
<xsl:value-of select="name()"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>