Используйте пространства имен xhtml в проблеме xsd - PullRequest
1 голос
/ 10 ноября 2010

Я хочу сделать в моем XML-файле что-то вроде этого:

<myfile>
<screen>
<img src="a.jpg"/>
</screen>
</myfile>

Я пытаюсь сделать это следующим образом: XML-файл

<?xml version="1.0" encoding="UTF-8"?>

          <myfile  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="myfile.xsd">

<screen>
<img src="a.jpg"/>
</screen>
</myfile>

XSD файл

<?xml version="1.0"?>

<xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"   xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsd:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="xhtml.xsd"/>
<xsd:element name="myfile">
<xsd:element name="screen">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="xhtml:img"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:element>

Но Firefox не отображает никаких ошибок, но я не вижу изображения: / Может ли кто-нибудь помочь с этим?

1 Ответ

2 голосов
/ 10 ноября 2010

Отображение изображений

Firefox, как браузер, отображает веб-страницы, написанные на XHTML или HTML.В этой ситуации он будет отображать изображения, помеченные как <img> элементы.

В противном случае он не делает ничего особенного с элементами <img>.Например, если у вас есть <img> элементов в середине вашего собственного пользовательского XML-документа, Firefox ничего не знает о том, что это такое.

Чтобы создать правильное отображение изображения, нужно создать XHTML-документ .

Пространства имен

Поскольку вы специально спрашивали о пространствах имен ... ваш XML-документ не будет проверяться по вашей схеме, поскольку ваша схемаожидающие элементы в пространстве имен XHTML, но элементы в вашем документе XML не находятся в пространстве имен.

Чтобы это исправить, измените следующую строку вашего документа XML

<myfile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:noNamespaceSchemaLocation="myfile.xsd">

на

<myfile xmlns="http://www.w3.org/1999/xhtml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:noNamespaceSchemaLocation="myfile.xsd">

Объявление пространства имен по умолчанию xmlns="http://www.w3.org/1999/xhtml" говорит, что «этот элемент и все потомки, не имеющие префикса пространства имен, находятся в пространстве имен XHTML».

Обратите внимание, что являетсяв определенном пространстве имен и , проверяемые определенной схемой , являются независимыми свойствами документа XML.(На самом деле первый является свойством элемента или атрибута, а не всего документа.) Схемы используют пространства имен, но оба они не совпадают.

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