Я работаю над приложением, которое встраивает рендерер Orbeon XForms.Я использую это для генерации XHTML, а не HTML.У нас есть форма, которая использует 2 пользовательских компонента XBL.
XHTML, который мы передаем orbeon, кажется правильным.Но полученный XHTML от Orbeon дважды содержит определение пространства имен xbl для элемента <body>
.Это предотвращает его синтаксический анализ в качестве действительного XML.
Это на самом деле очень сложная форма, которую я не могу опубликовать здесь, но важными моментами для этого вопроса являются:
<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 определены, ни один из них на самом деле не используется в теле документа.В результате получается XHTML от Orbon (опять упрощенно):
<?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>
Обратите внимание на дублированный xmlns:xbl="http://www.w3.org/ns/xbl"
на теге body.
Поиск в Google Я ничего не нашел по этой проблеме, кто-нибудьзнаете, что могло бы вызвать это и что я могу исправить?
Я заметил, что, если я определяю префикс xbl для элемента <xhtml:html>
вместо каждого элемента <xbl:xbl>
, это, кажется, непроблема, и в результате XHTML вне Orbeon этот префикс определяется только один раз для элемента <xhtml:html>
.