[英]Check if node contains value XSLT
我有以下xml:
<Reply>
<OptionInfoReply>
<Option>
<Opt>EDIFBEB </Opt>
<OptAvail>-3 </OptAvail>
</Option>
<Option>
<Opt>CHSFBEB </Opt>
<OptAvail>-3 </OptAvail>
</Option>
<Option>
<Opt>WESFBEB </Opt>
<OptAvail>-3 </OptAvail>
</Option>
還有我在其中使用的XML:
<Reply>
<OptionInfoReply>
<Option>
<Opt>CHSFBEB</Opt>
</Option>
</OptionInfoReply>
</Reply>
我要在第二個xml中移動每個。 我想檢查第二個XML中的CHSFBEB值是否在第一個xml中存在。
<xsl:template match="/">
<xsl:for-each select="/Reply/OptionInfoReply/Option">
<xsl:variable name="SearchOPT" select="Opt"/>
<db:AVAILABLE_ROOMS_NO>
<xsl:value-of select="$AVL/Reply/OptionInfoReply/Option/Opt[contains(.,$SearchOPT)]/../OptAvail"/>
</db:AVAILABLE_ROOMS_NO>
</xsl:for-each>
</xsl:template>
但是,如果在第一個XML中我有多個選擇,那么我不會從第一個xml中獲得OptAvail的值。 如果我只有一個節點,我將從OptAvail接收值。
希望這可以幫助,
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:MyUtils="pda:MyUtils">
<xsl:template match="/">
<check>
<xsl:variable name="second" select="MyUtils:getSecondXMLData()//Opt"/>
<xsl:for-each select="//Option">
<xsl:if test="Opt=$second">
<AVAILABLE_ROOMS_NO>
<xsl:value-of select="OptAvail"/>
</AVAILABLE_ROOMS_NO>
</xsl:if>
</xsl:for-each>
</check>
</xsl:template>
</xsl:stylesheet>
我還沒有通過文檔功能獲取第二個xml。 這部分是通過擴展功能“ getSecondXMLData()”完成的,該功能從第二個xml提供了一組節點。 我假設您的第一個xml是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<Reply>
<OptionInfoReply>
<Option>
<Opt>EDIFBEB</Opt>
<OptAvail>-3</OptAvail>
</Option>
<Option>
<Opt>CHSFBEB</Opt>
<OptAvail>-3 </OptAvail>
</Option>
<Option>
<Opt>WESFBEB</Opt>
<OptAvail>-3 </OptAvail>
</Option>
<Option>
<Opt>CHSFBEB</Opt>
<OptAvail>-3 </OptAvail>
</Option>
</OptionInfoReply>
</Reply>
請注意,您的第一個xml包含空格,在實際比較之前需要將其刪除
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.