我是 XSLT 的初学者。我的源 XML:
<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>
我需要Result
使用标签过滤RequestedDoc
标签。我在 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>
请帮忙。