xsd <any/> marklogic 中的不同结果
xsd <any/> different result in marklogic
XML:
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body xml:lang="en"><div></div></body>
</note>
XSD:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</xs:import>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body">
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="someType">
<xs:attribute ref="xml:lang" use="required">
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="someType" mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
已检查 this 并且有效。
但是这在Marklogic中不起作用,错误是:
XDMP-VALIDATEMISSINGELT: (err:XQDY0027) validate lax { $node } -- Missing required elements: Expected ((any(skip,!())+),(any(skip,!())+)) at fn:doc("d:/xml.xml")/*:note/*:body using schema "/schemas/xsd.xsd"
我的意图是像这样在正文中强制出现 HTML 内容:
<body xml:lang="en"><div></div></body>
在深入挖掘之前,我只想澄清一件事——你的模式在哪里?
MarkLogic 希望模式存在于特定内容数据库配置中引用的模式数据库中。这默认为 Schemas 数据库。
您是否已将所有引用的 Scema 包含在(通过 XML 或 XSD 到 Schemas 数据库中?)
在此处查看详细信息,包括 MarkLogic 解析架构的顺序和位置:https://docs.marklogic.com/guide/admin/schemas
最后,当开始探索 MarkLogic 中的模式使用时,请注意,更改模式时最好重新启动 MarkLogic。从技术上讲,您不需要重新启动,但实际上只是清除一些缓存,但如果可以重新启动,那么这会让您更快地完成并降低学习曲线。
似乎在 MarkLogic 模式解析中存在错误,其中 complexType 被标记为 'mixed' 并且还具有扩展名。
如果您要扩展另一种混合类型,第一个 'mixed' 是多余的,关闭此选项,一切都会如您所愿。
所以您应该尝试使用架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</xs:import>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body">
<xs:complexType>
<xs:complexContent>
<xs:extension base="someType">
<xs:attribute ref="xml:lang" use="required">
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="someType" mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
XML:
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body xml:lang="en"><div></div></body>
</note>
XSD:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</xs:import>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body">
<xs:complexType mixed="true">
<xs:complexContent>
<xs:extension base="someType">
<xs:attribute ref="xml:lang" use="required">
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="someType" mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
已检查 this 并且有效。 但是这在Marklogic中不起作用,错误是:
XDMP-VALIDATEMISSINGELT: (err:XQDY0027) validate lax { $node } -- Missing required elements: Expected ((any(skip,!())+),(any(skip,!())+)) at fn:doc("d:/xml.xml")/*:note/*:body using schema "/schemas/xsd.xsd"
我的意图是像这样在正文中强制出现 HTML 内容:
<body xml:lang="en"><div></div></body>
在深入挖掘之前,我只想澄清一件事——你的模式在哪里?
MarkLogic 希望模式存在于特定内容数据库配置中引用的模式数据库中。这默认为 Schemas 数据库。
您是否已将所有引用的 Scema 包含在(通过 XML 或 XSD 到 Schemas 数据库中?)
在此处查看详细信息,包括 MarkLogic 解析架构的顺序和位置:https://docs.marklogic.com/guide/admin/schemas
最后,当开始探索 MarkLogic 中的模式使用时,请注意,更改模式时最好重新启动 MarkLogic。从技术上讲,您不需要重新启动,但实际上只是清除一些缓存,但如果可以重新启动,那么这会让您更快地完成并降低学习曲线。
似乎在 MarkLogic 模式解析中存在错误,其中 complexType 被标记为 'mixed' 并且还具有扩展名。
如果您要扩展另一种混合类型,第一个 'mixed' 是多余的,关闭此选项,一切都会如您所愿。
所以您应该尝试使用架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</xs:import>
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body">
<xs:complexType>
<xs:complexContent>
<xs:extension base="someType">
<xs:attribute ref="xml:lang" use="required">
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="someType" mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>