我有以下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类型的元素,该元素在另一个ogranization的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, ,这是模式验证器。

谢谢。

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

我必须复制/粘贴代码,这是我要避免的……但是我想您无法拥有所需的一切。

有帮助吗?

解决方案

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

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

其他提示

除了改变 ref =type =, ,您的模式定义看起来正确。从错误消息中,我猜测架构验证器无法加载 current_obs.xsd 从提供的示意图中,这是有道理的。验证者无法验证是否有一种称为的类型 in_dat 因为它无法导入模式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top