Xml xls stylsheet的正确定义

Xml xls stylsheet的正确定义,xml,xslt,Xml,Xslt,我正试图使用一个我从中修改的java代码来提取下面示例xml数据中“node”元素中的所有属性。输出是一个空白的csv,只有我在样式表中定义的标题。由于代码正常工作,我怀疑样式表定义不正确,但我不知道如何修复它。我怎样才能纠正它 sample.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE network SYSTEM "http://www.matsim.org/files/dtd/network_v2.dtd">

我正试图使用一个我从中修改的java代码来提取下面示例xml数据中“node”元素中的所有属性。输出是一个空白的csv,只有我在样式表中定义的标题。由于代码正常工作,我怀疑样式表定义不正确,但我不知道如何修复它。我怎样才能纠正它

sample.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE network SYSTEM "http://www.matsim.org/files/dtd/network_v2.dtd">
<network>
    <nodes>
        <node id="1" x="-53196.450154726146" y="-3755010.0058102254" >
        </node>
        <node id="10" x="-54879.37761845079" y="-3753903.660850382" >
        </node>
        <node id="100" x="-46659.23389528884" y="-3749500.821686937" >
        </node>
        <node id="101" x="-54624.44957950422" y="-3757195.8898357535" >
        </node>
    </nodes>
</network>

style.xsl

?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
    <xsl:template match="/">
        id,x,y
        <xsl:for-each select="//node">
            <xsl:value-of select="node/@*"/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
?xml version=“1.0”>
id,x,y

这里有两个问题。两者都发生在同一语句中

 <xsl:value-of select="node/@*"/>
然而,这导致了第二个问题。在XSLT1.0中,
xsl:value of
仅在给定节点集时返回第一个节点的值,因此尽管
@*
将选择所有节点,但执行
操作将只输出第一个节点

现在,你可以这样做

<xsl:for-each select="@*">
    <xsl:value-of select="." />
</xsl:for-each>

但是属性不是在XML中排序的,因此不能保证它们将按照您期望的顺序返回。因此,可以肯定的是,您必须显式地选择属性

 <xsl:value-of select="@id" />
 <xsl:value-of select="@x" />
 <xsl:value-of select="@y" />

这里有两个问题。两者都发生在同一语句中

 <xsl:value-of select="node/@*"/>
然而,这导致了第二个问题。在XSLT1.0中,
xsl:value of
仅在给定节点集时返回第一个节点的值,因此尽管
@*
将选择所有节点,但执行
操作将只输出第一个节点

现在,你可以这样做

<xsl:for-each select="@*">
    <xsl:value-of select="." />
</xsl:for-each>

但是属性不是在XML中排序的,因此不能保证它们将按照您期望的顺序返回。因此,可以肯定的是,您必须显式地选择属性

 <xsl:value-of select="@id" />
 <xsl:value-of select="@x" />
 <xsl:value-of select="@y" />

以什么方式“不正确”以什么方式“不正确”?