如果条件满足,我想获得一个特定的值。实现此目的的方法是从原始xml文档中查找特定值,然后将其与外部文件进行比较。
<xsl:variable name="objNo">
<!-- If True, look up in document and get 'obj' -->
<xsl:when test="cac:AdditionalDocumentReference[cbc:DocumentType = 'AKV']">
<xsl:variable name='QueryResult' select='document("tmp9501.xml")/QueryResult/Result'/>
<xsl:value-of select='$QueryResult[ac_name = cac:AdditionalDocumentReference/cbc:ID]/obj'/>
</xsl:when>
</xsl:variable>
这是tmp9501.xml文档的一部分,我将在其中查找值
<?xml version="1.0" encoding="utf-8"?>
<QueryResult>
<Result>
<ac_name>12345678</ac_name>
<obj>AA12345</obj>
</Result>
<Result>
<ac_name>87654321</ac_name>
<obj>BB67890</obj>
</Result>
</QueryResult>
当我尝试运行此代码时,$ regNo不返回任何内容。
让我们假设cac:AdditionalDocumentReference/cbc:ID = 12345678
应该返回obj = AA12345
在这种情况下,如何返回正确的值?
答案 0 :(得分:1)
问题在于此表达式。...
$QueryResult[ac_name = cac:AdditionalDocumentReference/cbc:ID]
这是在ac_name
节点下寻找一个QueryResult/Result
,并且在同一cac:AdditionalDocumentReference
下寻找一个QueryResult/Result
,而实际上您想检查{ {1}}在当前节点下。
cac:AdditionalDocumentReference
或者,将相关值预先存储在变量中。...
<xsl:value-of select='$QueryResult[ac_name = current()/cac:AdditionalDocumentReference/cbc:ID]/obj'/>