我的xslt文件中的每个循环都有一个,它会处理多个条件,如果任何条件具有匹配的情况,我想退出循环并给出第一个值(已满足我的输出。
这是我的xml文件
<Product>
<ContactDetails>
<addressdetail>
<Street>Stack</Street>
<HouseNumber>123</HouseNumber>
</addressdetail>
<addressdetail>
<Street>Stack</Street>
<HouseNumber>123456</HouseNumber>
</addressdetail>
<addressdetail>
<Street>Stack</Street>
<HouseNumber>456</HouseNumber>
</addressdetail>
</ContactDetails>
</Product>
在我的XSL文件中,我有一些这样的kinding
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:saxon="http://saxon.sf.net/" extension-element-prefixes="saxon">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<p1:product_req>
<p2:Contactdetails_Req>
<xsl:for-each select ="Product[ContactDetails= 'addressdetails'] ">
<xsl:if test="Street='Stack'" >
<p3:SC>abc</p3:SC>
</xsl:if>
</xsl:for-each>
</p2:Contactdetails_Req>
</p1:product_req>
</xsl:template>
</xsl:stylesheet>
转换后,我的输出xml上有三个值
<p1:Product_Req>
<p2:ContactDetails_Req>
<p3:ac>abc</p3:ac>
<p3:ac>abc</p3:ac>
<p3:ac>abc</p3:ac>
</p1:Product_Req>
</p2:ContactDetails_Req>
但我不需要输出xml上的重复值,我只需要在我的Xml节点ac上有一个值。我尝试过使用身份变换,但似乎没有任何工作,任何帮助都非常感激
<p1:Product_Req>
<p2:ContactDetails_Req>
<p3:ac>abc</p3:ac>
</p1:Product_Req>
</p2:ContactDetails_Req>
我需要获得我的转换输出而没有任何重复。
答案 0 :(得分:1)
你的问题不明确。如果 - 看起来 - 你想测试至少一个地址(在整个XML中)是否具有给定的街道,你可以简单地做:
<xsl:template match="/">
<xsl:if test="Product/ContactDetails/addressdetail/Street='Stack'" >
<!-- whatever you want to output goes here -->
</xsl:if>
</xsl:template>