Как переопределить элемент xhtml body с помощью схемы xml? - PullRequest
2 голосов
/ 11 октября 2011

Это был мой первый вопрос, на который уже был дан ответ: Схема XML - можно ли разрешить определенный элемент только один раз во всем документе?

Теперь я хочу переопределить body элемент xhtml и добавить к нему уникальное ограничение. Это определение внутри xhtml-struct-1.xsd

 <xs:group
        name="xhtml.html.content">
        <xs:sequence>
            <xs:element
                name="head"
                type="xhtml.head.type"/>
            <xs:element
                name="body"
                type="xhtml.body.type"/>
        </xs:sequence>
    </xs:group>

в моем redefine.xsd Я пробовал это:

<xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
  <xs:group name="xhtml.html.content">
    <xs:sequence>
      <xs:element name="head" type="xhtml.head.type" />
      <xs:element name="body" type="xhtml.body.type" >
                <xs:unique name="highlander">
                     <xs:selector xpath=".//mylang:content"/>
                     <xs:field xpath="."/>
                </xs:unique>
            </xs:element>
        </xs:sequence>
    </xs:group>
</xs:redefine>

org.xml.sax.SAXParseException; SYSTEMID: Файл: XHTML-структура-1.xsd; номер строки: 113; номер столбца: 35; mg-props-correct.2: круговой определения для группы ': xhtml.html.content_fn3dktizrknc9pi'. Рекурсивное следование значениям {term} частиц приводит к частица, чей {термин} является самой группой.

Я проверяю десятки других вариантов, но всегда получаю странные ошибки, которые не понимаю. Как я могу переопределить элемент xhtml body с помощью XML Schema?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Вы пробовали разные парсеры / валидаторы?

Что касается моей несколько схожей проблемы, опубликованной в Списке рассылки разработчика XMLSchema W3C , был частный ответ (поэтому недоступен в архиве, связанном ранее)рассказывает мне о тестах респондента, выполняющих разные парсеры с разными результатами: libxml v20708 и MSXML v20090415 успешно прошли проверку, в то время как Xerces-J 2.11 и Saxon 9.2 оба имели проблемы с XSD.

0 голосов
/ 14 октября 2011

Переопределение групп работает по-другому.

<xs:redefine schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
  <xs:group name="xhtml.html.content">
    <xs:sequence>
      <xs:group ref="xhtml.html.content">
      ... additional elements/group to be in this sequence defined here ...
    </xs:sequence>
  </xs:group>
</xs:redefine>

Похоже, вы хотите переопределить тип "xhtml.body.type", и вы должны попытаться сделать это вместо переопределения группы "xhtml.html.content".

Может быть, эти фрагменты помогут:

http://www.datypic.com/books/defxmlschema/chapter18.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...