【问题标题】:Use xhtml namespaces in xsd problem在 xsd 问题中使用 xhtml 命名空间
【发布时间】:2010-11-09 21:13:14
【问题描述】:

我想在我的 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>

但火狐没有显示任何错误,但我看不到任何图像:/ 有人可以帮忙吗?

【问题讨论】:

    标签: xml xhtml xsd


    【解决方案1】:

    显示图片

    Firefox 作为浏览器,显示以 XHTML 或 HTML 编写的网页。在这种情况下,它将显示标记为&lt;img&gt; 元素的图像。

    否则,它不会对 &lt;img&gt; 元素做任何特别的事情。例如,如果您在自己的自定义 XML 文档中间有 &lt;img&gt; 元素,Firefox 就不知道它是什么。

    解决方法是,为了让图片正常显示,创建an XHTML document

    命名空间

    由于您专门询问了命名空间...您的 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 文档的独立属性。 (实际上前者是元素或属性的属性,而不是整个文档的属性。)Schemas 使用命名空间,但两者并不相同。

    【讨论】:

    • 但是当我的 xml 中有例如 元素时会发生什么?它使用我的 xsd 或 xhtml 的描述?
    • 当您说“它使用描述”时,您是在谈论验证吗? XSD 的目的是验证。您不必拥有 XSD 文件即可拥有在浏览器中工作的 XHTML 文档。如果确实需要验证 XHTML 文档,可以使用 validator.w3.org 或使用 DTD(请参阅 en.wikipedia.org/wiki/Xhtml#DOCTYPEs)。不推荐使用模式 (XSD),所以我会去掉 xmlns:xsi 和 xsi:noNamespaceSchemaLocation 属性。
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多