html - 使用 XSL 将 XML 转换为 HTMl 时丢失的值
问题描述
我的 XML 文件的某些值在转换时未显示。看起来 XSL 命名空间有些不对劲,但我想不通。
要转换的 XML 文件
<?xml-stylesheet type="text/xsl" href="birth_new_3.xsl"?>
<ns2:ROGDINFResponse xmlns="urn://x-artefacts-zags-rogdinf/types/4.0.1"
xmlns:ns2="urn://x-artefacts-zags-rogdinf/root/112-51/4.0.1">
<ns2:ZgsAnswer>
<ns2:BrthReg>
<ns2:BrthLcs>
<SerLcs>II-LP</SerLcs>
<NumLcs>443334</NumLcs>
<DateLcs>1988-03-18</DateLcs>
</ns2:BrthLcs>
<ns2:SvReg>
<ns2:SvRodiv>
<ns2:FIOrogd>
<Last>Last</Last>
<First>Fname</First>
<Middle>Mname</Middle>
</ns2:FIOrogd>
<ns2:BirthDate>1988-01-19</ns2:BirthDate>
<ns2:BirthPlace Place="Some place"/>
</ns2:SvRodiv>
</ns2:SvReg>
</ns2:BrthReg>
</ns2:ZgsAnswer>
</ns2:ROGDINFResponse>
XSL 文件
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns2="urn://x-artefacts-zags-rogdinf/root/112-51/4.0.1"
xmlns="urn://x-artefacts-zags-rogdinf/types/4.0.1">
<xsl:output method="html"/>
<xsl:template match="/">
<HTML>
<BODY>
<H2>Birth data</H2>
<span>Serial: <b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:BrthLcs/SerLcs"/>
</b>
</span>
<p>
<span>Number: <b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:BrthLcs/NumLcs"/>
</b>
</span>
</p>
<p>
<span>Date: <b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:BrthLcs/DateLcs"/>
</b>
</span>
</p>
<H3>Additional data: </H3>
<span>Last, First, Middle:
<b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:SvReg/ns2:SvRodiv/ns2:FIOrogd/Last"/>
</b>
<b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:SvReg/ns2:SvRodiv/ns2:FIOrogd/First"/>
</b>
<b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:SvReg/ns2:SvRodiv/ns2:FIOrogd/Middle"/>
</b>
</span>
<p>
<span>Date: <b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:SvReg/ns2:SvRodiv/ns2:BirthDate"/>
</b>
</span>
</p>
<p>
<span>Place: <b>
<xsl:apply-templates select="//ns2:ROGDINFResponse/ns2:ZgsAnswer/ns2:BrthReg/ns2:SvReg/ns2:SvRodiv/ns2:BirthPlace/@Place"/>
</b>
</span>
</p>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
我的 XML 的一些值显示得很好,但没有命名空间的字段的值没有显示(SerLcs、NumLcs、DateLcs、Last、First、Middle)。如何修复我的 XSL?
解决方案
而不是xmlns="urn://x-artefacts-zags-rogdinf/types/4.0.1"
在您想要的 XSLTxpath-default-namespace="urn://x-artefacts-zags-rogdinf/types/4.0.1"
中。请注意,这只适用于 XSLT 2 和 3 处理器,例如 Saxon 9 或 10、Saxon-JS 2、XmlPrime、Exselt、AltovaXML。
推荐阅读
- postgresql - 没有交叉表的 Postgres SQL 查询数据透视
- android - 当手机靠近耳朵时,React-Native iOS 和 Android 隐藏显示
- ios - SwiftUI 显示来自按钮的工作表不使用多个按钮
- unsupervised-learning - 寻找标记的最佳观察值
- c++ - 在 cpp 中膨胀字节
- facebook-access-token - 为什么 FB access_token 对我来说很长,但对其他用户却没有?
- css - 显示块不移动到下一行
- arguments - 在 Windows 上,寻找准系统 C++ 程序来确定另一个程序在启动时的起始参数
- javascript - JS HTML CSS:在我的参数中调用 popOpen() 时遇到问题
- python-3.x - 类似于 python 中的字符串的可变数据类型