首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UBL XML的XSLT无法找到节点值。

UBL XML的XSLT无法找到节点值。
EN

Stack Overflow用户
提问于 2016-09-14 02:27:04
回答 1查看 808关注 0票数 0

此XSLT

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
>
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <Things>
      <Thing AutoReceive="True">
        <xsl:value-of select="Order/cbc:ID" />
      </Thing>
    </Things>
  </xsl:template>
</xsl:stylesheet>

针对此XML的

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
    Unviversal Business Language 2.0
    http://docs.oasis-open.org/ubl/os-UBL-2.0/UBL-2.0.html
    http://docs.oasis-open.org/ubl/os-UBL-2.0/xsd/maindoc/UBL-Order-2.0.xsd
-->
<Order
  xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
  xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
  xmlns="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
>
  <!-- Mx Generated Order Number -->
  <cbc:ID>8343</cbc:ID>
</Order>

找不到节点值。我尝试了很多不同的版本,并请其他三个开发人员研究一下。到目前为止,我们没有人能弄明白这一点。

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<Things xmlns="urn:oasis:names:specification:ubl:schema:xsd:Order-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <Thing AutoReceive="True" />
</Things>
EN

回答 1

Stack Overflow用户

发布于 2016-09-14 05:37:29

Order也在名称空间中,所以在为名称空间分配前缀之后,必须使用完全限定的名称来调用它:

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:ord="urn:oasis:names:specification:ubl:schema:xsd:Order-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Order-2">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
    <Things>
        <Thing AutoReceive="True">
            <xsl:value-of select="ord:Order/cbc:ID" />
        </Thing>
    </Things>
</xsl:template>

</xsl:stylesheet>

这是假设您希望结果位于"urn:oasis:names:specification:ubl:schema:xsd:Order-2"命名空间中。

还请注意,为了本例的目的,这些命名空间声明是多余的:

代码语言:javascript
运行
复制
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39481616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档