我有这个问题。
我的输出如下:
<job id="">
<str name="person or company">text</str>
<str name="content">
<content>
<str name="title">
<h1 xmlns="http://www.w3.org/1999/xhtml">text</h1>
</str>
<str name="detail">
<p xmlns="http://www.w3.org/1999/xhtml">text</p>
</str>
我的名字就像那样:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:str="http://exslt.org/strings"
xmlns:exsl="http://exslt.org/common"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:etl="http://etl.dob.sk/etl"
extension-element-prefixes="str exsl"
exclude-result-prefixes="xhtml"
etl:norefetch="1">
<!-- sys -->
<xsl:output method="xml" indent="yes" encoding="utf-8" cdata-section-elements="param url"/>
如果我将此行放入名称空间:
xmlns="http://www.w3.org/1999/xhtml7
然后我在这里遇到问题:
<job xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" id="">
<str name="person or company">text</str>
<str name="content">
<content>
<str name="title">
<h1>text</h1>
</str>
<str name="detail">
<p>text</p>
</str>
我该如何解决?
答案 0 :(得分:2)
我怀疑您的输入元素位于XHTML命名空间中,并且您将它们复制到输出中,但是要删除命名空间。因此,您需要更改复制XHTML输入元素的代码以转换它们,例如
<xsl:template match="xhtml:*">
<xsl:element name="{local-name()}" namespace="">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
将剥离命名空间,然后取消
<xsl:copy-of select="xhtml:h1"/>
你需要
<xsl:apply-templates select="xhtml:h1"/>
如果没有帮助,您需要分享更多样式表代码。