0

我有这个 xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<bo:C837ClaimParent xsi:type="bo:C837ClaimParent"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
xmlns:bo="http://somelongpathHere/process/bo">
<claimAux>
...
</claimAux>
<enterpriseClaim>
...
    <patientAccountNumber>data to capture here</patientAccountNumber>
</enterpriseClaim>

我需要匹配 <patientAccountNumber> 内的数据,该数据位于 <enterpriseClaim> 内,该数据位于 <bo:C837ClaimParent> 内要么找不到,要么匹配整个 xml 文件,我的 xsl 文件如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

我需要在我的 xsl:template 和我的 xsl:value-of 上指定什么?

此外,对于同一个文件,我将匹配其他值,所有内容都在主节点 <bo:C837ClaimParent 内,那么我需要使用什么才能有效地匹配整个文件中的节点?

4

2 回答 2

2

您似乎缺少bo前缀的命名空间声明。除非您使用,否则此命名空间可能必须出现在您的解决方案中local-name()

编辑(命名空间出现后!

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:bo="http://somelongpathHere/process/bo">
    <xsl:output method="xml" version="2.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <html>
....
<div>
  <xsl:value-of select="bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" /></div>

你确定它enterpriseClaim在不同的命名空间中C837ClaimParent吗?

于 2009-10-26T22:39:47.593 回答
1
<xsl:stylesheet ... xmlns:bo="http://www.bo.org">
   ...
   <xsl:value-of select="/bo:C837ClaimParent/enterpriseClaim/patientAccountNumber" />
   ...
</xsl:stylesheet>

一般来说,我的建议是阅读 XML 和 XPath 中的命名空间。

于 2009-10-26T22:43:52.233 回答