如何摆脱xmlns:xsl =“ http://www.w3.org/1999/XSL/Transform”元素上的名称空间

问题描述 投票:0回答:1

我正在研究从别人那里继承的XSLT代码。它使用<xsl:output method="html"/>作为输出方法。 HTML元素被创建为文字(例如<html>等)。问题是我无法摆脱xmlns:xsl="http://www.w3.org/1999/XSL/Transform"元素上的<html>命名空间。

如果我用xsl:element生成html元素,则名称空间如预期的那样消失了,但是所有子级都拥有了它,而我只是不能将所有的文字都更改为xsl:element,所以有太多的东西了,名称空间实际上没有造成任何伤害。只是我想找出是否有一种在保留文字的同时将其删除的方法。

我已经尝试了所有想到的方法,但是没有任何效果。为什么这个命名空间在那里?就我所知,它不应该被复制,并且您不能使用exclude-result-prefixes将其删除。

我正在使用Saxon9-PE。

saxon
1个回答
0
投票

回答我自己的问题。

这是由于命名空间别名引起的。以下代码位于其中一个文件中:

<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:x="http://www.w3.org/1999/XSL/TransformAlias"
    >
    <xsl:namespace-alias stylesheet-prefix="x" result-prefix="xsl"/>

该代码可能是从第3方库复制而来的,别名仍然保留(它实际上是在一个元素中使用的,没有最清楚的主意,为什么。)

无论如何,一旦删除别名,命名空间就会从生成的文件中消失。有趣的是,仅仅修复使用它的模板还不够。只要存在名称空间别名,就会生成名称空间。

我从没想过要搜索名称空间别名,当在代码中查找所有出现的名称空间时,我很幸运地发现了它:>

© www.soinside.com 2019 - 2024. All rights reserved.