Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在xslt中定义值_Xml_Xslt_Xpath - Fatal编程技术网

Xml 如何在xslt中定义值

Xml 如何在xslt中定义值,xml,xslt,xpath,Xml,Xslt,Xpath,如何查看以下NVBusinessId数据 <FinalBusinessDetails> <BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails" xmlns="http://www.portal.nv.gov/FinalCorporationDetails"> <ns0:FinalBusinessIdDetails&g

如何查看以下
NVBusinessId
数据

<FinalBusinessDetails>
<BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails" 
                   xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV0511201142</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV0511201143</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
    <ns0:FinalBusinessIdDetails>
        <ns0:NVBusinessId>:NV20111227802</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
</BusinessIdDetails>

:NV0511201142
:NV0511201143
:NV20111227759
:NV20111227763
:NV20111227763
:NV20111227759
:
:NV20111227802

最终结果应该在

<FinalBusinessDetails>
   <BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails"
                      xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
      <ns0:FinalBusinessIdDetails>
         <ns0:NVBusinessId>NV0511201142:NV0511201143:NV20111227759:NV20111227763</ns0:NVBusinessId>
      </ns0:FinalBusinessIdDetails>
   </BusinessIdDetails>
</FinalBusinessDetails>

NV0511201142:NV0511201143:NV20111227759:NV20111227763
XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails"
    exclude-result-prefixes="ns0"
>
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="FinalBusinessDetails">
    <FinalBusinessDetails>
      <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
        <ns0:FinalBusinessIdDetails>
          <ns0:NVBusinessId>
            <xsl:apply-templates select="//ns0:FinalBusinessIdDetails"/>
          </ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
      </BusinessIdDetails>
    </FinalBusinessDetails>
  </xsl:template>


  <xsl:template match="ns0:FinalBusinessIdDetails">
    <xsl:value-of select="ns0:NVBusinessId/."/>
  </xsl:template>

</xsl:stylesheet>

输出:

<?xml version="1.0" encoding="utf-8"?>
<FinalBusinessDetails>
  <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
    <ns0:FinalBusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
      <ns0:NVBusinessId>:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802</ns0:NVBusinessId>
    </ns0:FinalBusinessIdDetails>
  </BusinessIdDetails>
</FinalBusinessDetails>

:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802
此XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">

    <xsl:template match="*">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="FinalBusinessDetails">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="ns0:BusinessIdDetails">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <ns0:FinalBusinessIdDetails>
                <xsl:apply-templates/>
            </ns0:FinalBusinessIdDetails>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="text()">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>

产生以下结果:

<FinalBusinessDetails>
    <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails" xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
        <ns0:FinalBusinessIdDetails>:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802</ns0:FinalBusinessIdDetails>
    </BusinessIdDetails>
</FinalBusinessDetails>

:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802

在XSLT2.0中,生活似乎简单了一点。您可以直接使用的
xsl:value(最终还指定了一个分隔符):


这个简短而完整的转换基于最基本的XSLT设计模式:覆盖标识规则:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="*[1]/ns0:NVBusinessId">
  <xsl:copy>
   <xsl:apply-templates select="/*/*/*/ns0:NVBusinessId/text()"/>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="ns0:FinalBusinessIdDetails[position() >1]"/>
</xsl:stylesheet>
<FinalBusinessDetails>
    <BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails" xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201142</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201143</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227802</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
    </BusinessIdDetails>
</FinalBusinessDetails>
<FinalBusinessDetails>
   <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails" xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
      <ns0:FinalBusinessIdDetails>
         <ns0:NVBusinessId>:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802</ns0:NVBusinessId>
      </ns0:FinalBusinessIdDetails>
   </BusinessIdDetails>
</FinalBusinessDetails>

应用于提供的XML文档时

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="*[1]/ns0:NVBusinessId">
  <xsl:copy>
   <xsl:apply-templates select="/*/*/*/ns0:NVBusinessId/text()"/>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="ns0:FinalBusinessIdDetails[position() >1]"/>
</xsl:stylesheet>
<FinalBusinessDetails>
    <BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails" xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201142</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201143</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227802</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
    </BusinessIdDetails>
</FinalBusinessDetails>
<FinalBusinessDetails>
   <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails" xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
      <ns0:FinalBusinessIdDetails>
         <ns0:NVBusinessId>:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802</ns0:NVBusinessId>
      </ns0:FinalBusinessIdDetails>
   </BusinessIdDetails>
</FinalBusinessDetails>

:NV0511201142
:NV0511201143
:NV20111227759
:NV20111227763
:NV20111227763
:NV20111227759
:
:NV20111227802
生成所需的正确结果

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="*[1]/ns0:NVBusinessId">
  <xsl:copy>
   <xsl:apply-templates select="/*/*/*/ns0:NVBusinessId/text()"/>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="ns0:FinalBusinessIdDetails[position() >1]"/>
</xsl:stylesheet>
<FinalBusinessDetails>
    <BusinessIdDetails xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails" xmlns="http://www.portal.nv.gov/FinalCorporationDetails">
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201142</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV0511201143</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227763</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227759</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
        <ns0:FinalBusinessIdDetails>
            <ns0:NVBusinessId>:NV20111227802</ns0:NVBusinessId>
        </ns0:FinalBusinessIdDetails>
    </BusinessIdDetails>
</FinalBusinessDetails>
<FinalBusinessDetails>
   <BusinessIdDetails xmlns="http://www.portal.nv.gov/FinalCorporationDetails" xmlns:ns0="http://www.portal.nv.gov/FinalCorporationDetails">
      <ns0:FinalBusinessIdDetails>
         <ns0:NVBusinessId>:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802</ns0:NVBusinessId>
      </ns0:FinalBusinessIdDetails>
   </BusinessIdDetails>
</FinalBusinessDetails>

:NV0511201142:NV0511201143:NV20111227759:NV20111227763:NV20111227763:NV20111227759::NV20111227802

问得好,+1。请参阅我的答案,以获得一个完整的解决方案,该解决方案是所有答案中最短、最简单的,并且基于最基本的XSLT设计模式:重写标识规则。