Xml 如何在xslt中使用//通过XPATH使用选择节点
这是我的输入模式(xml):Xml 如何在xslt中使用//通过XPATH使用选择节点,xml,xslt,Xml,Xslt,这是我的输入模式(xml): 普拉卡什 50000 艾莉 500000 ` 我正在应用以下xslt: <?xml version="1.0" encoding="utf-16" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var= "http://schemas.microsoft.
普拉卡什
50000
艾莉
500000
`
我正在应用以下xslt:
<?xml version="1.0" encoding="utf-16" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var=
"http://schemas.microsoft.com/BizTalk/2003/var"
exclude-result-prefixes="msxsl var s0"
version="1.0" xmlns:ns0="http://Schema.OutputSchema1" xmlns:s0=
"http://Schema.InputSchema1">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="/s0:Catalog" />
</xsl:template>
<xsl:template match="/s0:Catalog">
<ns0:Output>
<xsl:for-each select="cd/cd1">
<ID>
<xsl:value-of select="//@ID"/>
</ID>
</xsl:for-each>
</ns0:Output>
</xsl:template>
</xsl:stylesheet>
但是每次循环2次时,我都会得到ID值1。
//的实际用途是什么?如何通过//获取所有ID值?说明:
<xsl:value-of select="//@ID"/>
--
还请注意,此模板:
<xsl:template match="/">
<xsl:apply-templates select="/s0:Catalog" />
</xsl:template>
是多余的。@Prakash
您可以使用下面的XSL来获取所有ID值
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select= "Catalog/cd/cd1">
<ID>
<xsl:value-of select="@ID"/>
</ID>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<ID>1</ID>
<ID>2</ID>
1.
2.
你好,迈克尔。谢谢你的回复。从你的观点来看://(元素、属性或节点)只返回文档顺序中第一个元素/属性/节点的值,无论我是否应用循环。我说的对吗?@PrakashSajwan是和否。XPath表达式//abc
选择整个文档中名为“abc”的所有元素,而不管它们在文档层次结构中的位置如何,也不管当前上下文如何。XSLT指令xsl:value of
返回由select
属性选择的所有节点中第一个节点的值(这在XSLT 1.0中;结果在XSLT 2.0中不同)。@PrakashSajwan如果您的问题得到了回答,请通过接受答案来关闭它。1。您的解决方案与OP的输入不兼容。-2.您的输出不是格式良好的XML文档。michael,我明白了//(节点/元素/属性)的意思。我想我可以得到我的订单如下:,现在我得到的所有属性如下:1,2200500,谢谢
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select= "Catalog/cd/cd1">
<ID>
<xsl:value-of select="@ID"/>
</ID>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<ID>1</ID>
<ID>2</ID>