1

我有以下 XSD 的开头:

<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:no="http://www.sychophants.com">
<xs:import namespace="http://www.sychophants.com" schemaLocation="current_obs.xsd"/>

...然后是其他一些定义...

<xs:element name="noInDatPletd" ref="no:in_dat"/>

in_dat 存在于另一个组织编写的模式中。我本质上想要做的是创建一个模式,该模式将包含 in_dat 类型的元素,该元素在其他组织的 XSD 中定义。

我什至接近正确吗?我对 XML 很陌生。

我不断得到

    http://location_of_my_xsd/temp.xsd:79:9: Invalid: Undefined element 
    no{http://www.sychophants.com}:in_dat referenced from content model 

来自http://www.w3.org/2001/03/webdata/xsv,它是一个模式验证器。

谢谢。

编辑:感谢你们两个回答。问题似乎是其他组织没有在其架构中定义 targetNamespace 属性。结果是我无法将命名空间导入到我的架构中,这意味着我无法使用提供的类型。

我不得不复制/粘贴代码,这是我想避免的……但我猜你不可能拥有你想要的一切。

4

2 回答 2

3

我只看到一个明显的错误:您ref="no:in_dat"用于引用类型。你应该type="no:in_dat"在那里使用。ref将引用全局元素(不应与 name属性一起使用)。

除此之外,您是否将外部架构传递给您自己架构旁边的验证器?当然需要使用您的架构进行验证。

于 2010-07-01T07:46:35.050 回答
1

除了将ref=更改为type=之外,您的架构定义看起来是正确的。从错误消息中,我猜测架构验证器无法从提供的 schemaLocation 加载current_obs.xsd,这是有道理的。验证器无法验证是否存在名为in_dat的类型,因为它无法导入模式。

于 2010-07-01T19:28:42.187 回答