首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么导致Orbeon在XHTML模式下产生重复的xmlns:xbl前缀?

是什么导致Orbeon在XHTML模式下产生重复的xmlns:xbl前缀?
EN

Stack Overflow用户
提问于 2011-08-04 11:36:43
回答 1查看 195关注 0票数 1

我正在开发一个嵌入Orbeon XForms渲染器的应用程序。我使用它来生成XHTML,而不是HTML。我们有一个使用2个自定义XBL组件的表单。

我们传递给orbeon的XHTML似乎是正确的。但是从Orbeon得到的XHTML在<body>元素上包含了两次xbl名称空间的定义。这阻止了它被解析为有效的XML。

这实际上是一个非常复杂的表单,我不能在这里发布,但这个问题的重要部分是:

代码语言:javascript
复制
<xhtml:html
    xmlns:exf="http://www.exforms.org/exf/1-0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
    xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:xf="http://www.w3.org/2002/xforms"
    xmlns:f="http://orbeon.org/oxf/xml/formatting"
    xmlns:fw="http://orionhealth.com/forms/widgets" xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <xhtml:head>
        <!-- Lots of stuff -->
        <xbl:xbl xmlns:xbl="http://www.w3.org/ns/xbl">
            <xbl:script src="...."/>
            <xbl:binding id="fw-autocomplete" element="fw|autocomplete">
                <xbl:template>
                    <!-- Lots of stuff -->
                </xbl:template>
            </xbl:binding>
        </xbl:xbl>
        <xbl:xbl xmlns:xbl="http://www.w3.org/ns/xbl">
            <xbl:script src="...."/>
            <xbl:binding id="fw-datetime" element="fw|datetime">
                <xbl:template>
                    <!-- Lots of stuff -->
                </xbl:template>
            </xbl:binding>
            <xbl:binding id="fw-date" element="fw|date">
                <xbl:template>
                    <!-- Lots of stuff -->
                </xbl:template>
            </xbl:binding>
            <xbl:binding id="fw-partial-date" element="fw|partial-date">
                <xbl:template>
                    <!-- Lots of stuff -->
                </xbl:template>
            </xbl:binding>
        </xbl:xbl>
    </xhtml:head>
    <xhtml:body id="body">
        <!-- Lots of stuff -->
    </xhtml:body>
</xhtml:html>

值得注意的是,虽然这两个XBL组件都已定义,但它们都没有在文档正文中实际使用。从Orbon得到的XHTML (同样经过简化)是:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:exf="http://www.exforms.org/exf/1-0"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
      xmlns:ev="http://www.w3.org/2001/xml-events"
      xmlns:xf="http://www.w3.org/2002/xforms"
      xmlns:f="http://orbeon.org/oxf/xml/formatting"
      xmlns:fw="http://orionhealth.com/forms/widgets"
      xmlns:xhtml="http://www.w3.org/1999/xhtml"
      xmlns="http://www.w3.org/1999/xhtml"
      xxforms:noscript="true">
    <head>
        <!-- Lots of Stuff -->
    </head>
    <body xmlns:xbl="http://www.w3.org/ns/xbl" xmlns:xbl="http://www.w3.org/ns/xbl"
          id="body"
          class="yui-skin-sam">
        <!-- Lots of Stuff -->
    </body>
</html>

注意body标记上的重复xmlns:xbl="http://www.w3.org/ns/xbl"

谷歌我没有找到任何关于这个问题的东西,有谁知道是什么导致了这个问题,我能做些什么来解决它呢?

我注意到,如果我在<xhtml:html>元素上定义xbl前缀,而不是在每个<xbl:xbl>元素上定义xbl前缀,这似乎不是问题,并且在Orbeon产生的XHTML只在<xhtml:html>元素上定义一次这个前缀。

EN

回答 1

Stack Overflow用户

发布于 2012-06-28 02:38:14

Orbeon使用XSLT将XForms文档转换为XHTML。XSLT spec说:

这意味着源文档中的两个名称空间声明必须按照规范进行复制,而不管它们在结果文档中的相关性。

您偶然发现的在根节点上定义名称空间的解决方案也在an unrelated question中讨论过。

在XSLT2.0中,可以向xsl:copyxsl:copy-of元素添加copy-namespaces="no"属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6935915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档