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
Xslt 第一次出现节点时的xsl打印头_Xslt_Printing_Header - Fatal编程技术网

Xslt 第一次出现节点时的xsl打印头

Xslt 第一次出现节点时的xsl打印头,xslt,printing,header,Xslt,Printing,Header,我有一个简单的任务,我找不到解决方案,而且我对xsl还很熟悉,不知道如何去做。我有一个节点列表,在第一次出现节点时,我想打印一个标题。例如: xml摘录 <data> <subdata1>value1.1</subdata1> <subdata2>value1.2</subdata2> </data> <data> <subdata1>value2.1</subdata1

我有一个简单的任务,我找不到解决方案,而且我对xsl还很熟悉,不知道如何去做。我有一个节点列表,在第一次出现节点时,我想打印一个标题。例如:

xml摘录

<data>
    <subdata1>value1.1</subdata1>
    <subdata2>value1.2</subdata2>
</data>
<data>
    <subdata1>value2.1</subdata1>
    <subdata2>value2.2</subdata2>
</data>
<data>
    <subdata1>value3.1</subdata1>
    <subdata2>value3.2</subdata2>
</data>
在第一个“数据”节点之前会有一些东西,所以我不认为我可以提前打印出来。我在考虑一个带有标志的if语句,该标志将在它第一次找到数据时设置,但我的实现不起作用。有什么办法吗


谢谢

此转换:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="data[1]">
  <xsl:text>subdata1&#9;subdata2</xsl:text>
  <xsl:apply-templates select="../data" mode="process"/>
 </xsl:template>

 <xsl:template match="data" mode="process">
  <xsl:value-of select="concat('&#xA;', subdata1, '&#9;',subdata2)"/>
 </xsl:template>

 <xsl:template match="data"/>
</xsl:stylesheet>
说明:适当使用模板和模式

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="data[1]">
  <xsl:text>subdata1&#9;subdata2</xsl:text>
  <xsl:apply-templates select="../data" mode="process"/>
 </xsl:template>

 <xsl:template match="data" mode="process">
  <xsl:value-of select="concat('&#xA;', subdata1, '&#9;',subdata2)"/>
 </xsl:template>

 <xsl:template match="data"/>
</xsl:stylesheet>
<t>
    <data>
        <subdata1>value1.1</subdata1>
        <subdata2>value1.2</subdata2>
    </data>
    <data>
        <subdata1>value2.1</subdata1>
        <subdata2>value2.2</subdata2>
    </data>
    <data>
        <subdata1>value3.1</subdata1>
        <subdata2>value3.2</subdata2>
    </data>
</t>
subdata1    subdata2
value1.1    value1.2
value2.1    value2.2
value3.1    value3.2