【问题标题】:xml created from an xsd added to eclipse catalog wont be validated correctly从添加到 Eclipse 目录的 xsd 创建的 xml 将无法正确验证
【发布时间】:2014-03-18 03:34:30
【问题描述】:

我手动将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 模式)

形成我放入 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,以便正确验证它?

【问题讨论】:

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


    【解决方案1】:

    我已经通过在密钥/名称的开头添加 urnurl 解决了这个问题。

    使用 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要求你输入密钥时手动(Window > Preferences > XML > XML Catalog > add)

    我不知道它为什么会起作用。但我会试着找出答案。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 2014-02-24
      • 2012-07-28
      • 2021-07-19
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2020-10-10
      相关资源
      最近更新 更多