我手动将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,以便可以正确验证它?
答案 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;添加)
我不确切知道它为什么会起作用。但是我会试着找出来。