从添加到eclipse目录的xsd创建的xml无法正确验证

时间:2014-03-16 23:43:10

标签: xml eclipse eclipse-plugin eclipse-rcp xml-validation

我手动将xsd添加到eclipse目录(Window > Preferences > XML > XML Catalog > add)

或通过WST使用catalogContribution

这是XSD:     

    <xs:include schemaLocation="xmlCommon.xsd" />
    <xs:include schemaLocation="xmlStateProvider.xsd" />
    <xs:element name="tmfxml">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element maxOccurs="unbounded" minOccurs="0" name="stateProvider" type="stateProvider" />
            </xs:choice>
        </xs:complexType>
    </xs:element>

</xs:schema>

从此XSD生成的xml是:

<?xml version="1.0" encoding="UTF-8"?>
<tmfxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xmlDefinition">
</tmfxml>

当我尝试验证下面显示的XML时,它给了我这个警告:

  

文档中引用的语法约束(DTD或XML Schema)

我在XML文件中放置任何尊重XML标准的内容,除了下面引用的警告(意味着它与XSD无关)外,没有任何错误验证

当我将xsi:noNamespaceSchemaLocation中指定的路径更改为绝对值时:

<?xml version="1.0" encoding="UTF-8"?>
<tmfxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/home/l3727/workspace/linuxtools2/lttng/org.eclipse.linuxtools.tmf.analysis.xml.core/src/org/eclipse/linuxtools/tmf/analysis/xml/core/module/xmlDefinition.xsd">
</tmfxml>

它完美无缺。 没有更多的警告,当我尝试放置一个随机的XML标签,然后尝试验证XML文件时,它会给我一些错误。

有没有办法在没有此警告的情况下自动生成XML,以便可以正确验证它?

1 个答案:

答案 0 :(得分:0)

我通过在键/名称的开头添加 urn url 解决了这个问题。

使用WST我将此贡献添加到eclipse目录:

 <extension 
        point="org.eclipse.wst.xml.core.catalogContributions">
      <catalogContribution id="default">
        <uri 
            name="urn:xmlDefinition.xsdl" 
            uri="../org.eclipse.linuxtools.tmf.analysis.xml.core/src/org/eclipse/linuxtools/tmf/analysis/xml/core/module/xmlDefinition.xsd"/>
      </catalogContribution>
   </extension>

或者当eclipse要求您输入密钥时,手动(窗口&gt;首选项&gt; XML&gt; XML目录&gt;添加)

enter image description here

我不确切知道它为什么会起作用。但是我会试着找出来。