Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在xslt中使用//通过XPATH使用选择节点_Xml_Xslt - Fatal编程技术网

Xml 如何在xslt中使用//通过XPATH使用选择节点

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.

这是我的输入模式(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.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>