我是XSLT的初學者。 我的源XML:XSLT如何使用數組篩選數據
<Request>
<Documents>
<Doc Type="A">123</Doc>
<Doc Type="C">345</Doc>
</Documents>
</Request>
我的回答是XML:
<Response>
<RequestedDoc>
<Doc Type="A">123</Doc>
<Doc Type="C">345</Doc>
</RequestedDoc>
<Result>
<Document>
<Id>A123</Id>
<Name>Doc1</Name>
</Document>
<Document>
<Id>E143</Id>
<Name>Doc2</Name>
</Document>
<Document>
<Id>C345</Id>
<Name>Doc3</Name>
</Document>
<Document>
<Id>D153</Id>
<Name>Doc4</Name>
</Document>
</Result>
</Response>
,我需要使用RequestedDoc
標籤過濾Result
標籤。 我已經嘗試過下面的XSLT,但它只返回第一個結果。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:variable name="requestedDoc" select="//RequestedDoc/Doc"/>
<xsl:template match="Response">
<xsl:element name="FilterResult">
<xsl:apply-templates select="//Result/Document[contains(Id,$requestedDoc)]"/>
</xsl:element>
</xsl:template>
<xsl:template match="Document">
<xsl:element name="Name">
<xsl:value-of select="Name"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但是這個XSLT總是返回第一個數據Doc A123
。
<FilterResult>
<Name>Doc1</Name>
</FilterResult>
預期的結果是
<FilterResult>
<Name>Doc1</Name>
<Name>Doc3</Name>
</FilterResult>
請幫助。
請。 *編輯*問題,並指定轉換的確切想要的結果 - 以便我們不需要猜測。 –
@DimitreNovatchev完成:) –
Ankur Raiyani,我發佈了一個答案。 –