Xslt 中的条件的xsl副本,用于每个
以下是一个XML示例:Xslt 中的条件的xsl副本,用于每个,xslt,xslt-2.0,Xslt,Xslt 2.0,以下是一个XML示例: <OUT> <Header> <LineType>H</LineType> <DocumentType>OUT</DocumentType> <ClientCode>177</ClientCode> <OrderNumber>SP03038181</OrderNumber>
<OUT>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038181</OrderNumber>
<PayerINN>2636052865</PayerINN>
<TotalItems>3</TotalItems>
</Header>
<Line>
<LineType>I</LineType>
<Unit>PCE</Unit>
<OrderNumber>SP03038181</OrderNumber>
<Party>A289217</Party>
<field>20171031</field>
</Line>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038181</OrderNumber>
<Party>0911082</Party>
<field>20150731</field>
</Line>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038322</OrderNumber>
</Header>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038322</OrderNumber>
<Party>Z10208</Party>
<field>20141231</field>
</Line>
</OUT>
无法工作,它会复制所有
行
节点。尝试将for行的副本更改为:
<xsl:copy-of select="../Line[OrderNumber = current()/OrderNumber]"/>
这将选择OrderNumber与
current()
标题相同的行条目尝试将for行的副本更改为:
<xsl:copy-of select="../Line[OrderNumber = current()/OrderNumber]"/>
这将选择OrderNumber与
current()相同的行条目
标题那么谓词行[OrderNumber=./OrderNumber]
与行[OrderNumber=OrderNumber]
相同。首先,我认为您需要Line[current()/OrderNumber=OrderNumber]
,但我强烈建议使用一个键或为每个组查找匹配的项目。那么谓词Line[OrderNumber=/OrderNumber]
与Line[OrderNumber=OrderNumber]
相同。首先,我想您需要[code>行[current()/OrderNumber=OrderNumber],但我强烈建议您使用一个键或为每个组查找匹配的项目。试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="*/Header">
<xsl:variable name="orderNumber" select="OrderNumber"/>
<part>
<header></header>
<content>
<OUT>
<xsl:copy-of select="."/>
<xsl:copy-of select="//Line[OrderNumber = $orderNumber]"/>
</OUT>
</content>
</part>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
要获得输出,请执行以下操作:
<part>
<header></header>
<content>
<OUT>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038181</OrderNumber>
<PayerINN>2636052865</PayerINN>
<TotalItems>3</TotalItems>
</Header>
<Line>
<LineType>I</LineType>
<Unit>PCE</Unit>
<OrderNumber>SP03038181</OrderNumber>
<Party>A289217</Party>
<field>20171031</field>
</Line>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038181</OrderNumber>
<Party>0911082</Party>
<field>20150731</field>
</Line>
</OUT>
</content>
</part>
<part>
<header></header>
<content>
<OUT>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038322</OrderNumber>
</Header>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038322</OrderNumber>
<Party>Z10208</Party>
<field>20141231</field>
</Line>
</OUT>
</content>
</part>
H
出来
177
SP03038181
2636052865
3.
我
四氯乙烯
SP03038181
A289217
20171031
我
SP03038181
0911082
20150731
H
出来
177
SP03038322
我
SP03038322
Z10208
20141231
试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="*/Header">
<xsl:variable name="orderNumber" select="OrderNumber"/>
<part>
<header></header>
<content>
<OUT>
<xsl:copy-of select="."/>
<xsl:copy-of select="//Line[OrderNumber = $orderNumber]"/>
</OUT>
</content>
</part>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
要获得输出,请执行以下操作:
<part>
<header></header>
<content>
<OUT>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038181</OrderNumber>
<PayerINN>2636052865</PayerINN>
<TotalItems>3</TotalItems>
</Header>
<Line>
<LineType>I</LineType>
<Unit>PCE</Unit>
<OrderNumber>SP03038181</OrderNumber>
<Party>A289217</Party>
<field>20171031</field>
</Line>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038181</OrderNumber>
<Party>0911082</Party>
<field>20150731</field>
</Line>
</OUT>
</content>
</part>
<part>
<header></header>
<content>
<OUT>
<Header>
<LineType>H</LineType>
<DocumentType>OUT</DocumentType>
<ClientCode>177</ClientCode>
<OrderNumber>SP03038322</OrderNumber>
</Header>
<Line>
<LineType>I</LineType>
<OrderNumber>SP03038322</OrderNumber>
<Party>Z10208</Party>
<field>20141231</field>
</Line>
</OUT>
</content>
</part>
H
出来
177
SP03038181
2636052865
3.
我
四氯乙烯
SP03038181
A289217
20171031
我
SP03038181
0911082
20150731
H
出来
177
SP03038322
我
SP03038322
Z10208
20141231