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设计模式:重写标识规则。