XSLT:如何检查子元素是否等于一个值



我需要选择子元素messageType='PrimaryMessage'的所有Message对象。

我试着通过做到这一点

<xsl:pattern matching="/">
<xsl:for-each select="...">

但是我还没能达到预期的结果。有人能帮我吗?

示例XML:

<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<QueryResultList>
<QueryResult>
<Message xsi:type="ResponseMessageType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<messageType>StatusMessage</messageType>
</Message>
</QueryResult>
<QueryResult>
<Message xsi:type="ResponseMessageType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<messageType>StatusMessage</messageType>
</Message>
</QueryResult>
<QueryResult>
<Message xsi:type="ResponseMessageType"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<messageType>PrimaryMessage</messageType>
</Message>
</QueryResult>
</QueryResultList>
</S:Body>
</S:Envelope>

尝试以下操作:

<xsl:for-each select="QueryResultList/QueryResult/Message[messageType='PrimaryMessage']"/>

基本上,你在expath表达式中添加了一个过滤器。因此,我们不需要对所有Message元素中的每一个执行a,而只需要子元素messageType等于"PrimaryMessage"的Message元素

相关内容

最新更新