将名称空间添加到xsd元素

时间:2019-07-08 05:45:21

标签: xml xsd hl7-fhir

我花了很多时间试图使此XSD符合我在这里拥有的XML有效负载,我现在得到的错误是“属性'值'必须出现在元素'患者'上。”

schema.xml

<Bundle xmlns="http://hl7.org/fhir" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<id value="93c4260b-8ff3-420a-bbe4-2f8fee6a06f7"/>
<meta>
    <lastUpdated value="2019-07-02T11:16:51.120-04:00"/>
</meta>
<type value="searchset"/>
<total value="1"/>
<link>
    <relation value="self"/>
    <url value="https://my-url/Patient?identifier=1.3.6.1.4.1.12009.1.40.1%7C47211&amp;link=210988314"/>
</link>
<entry>
    <fullUrl value="https://my-url/Patient/40-141247"/>
    <resource>
        <Patient xmlns="http://hl7.org/fhir">
            <id value="40-141227247"/>
            <link>
                <other>
                    <reference value="Patient/31-124278"/>
                </other>
                <type value="seealso"/>
            </link>
            <link>
                <other>
                    <reference value="Patient/40-133347"/>
                </other>
                <type value="seealso"/>
            </link>
        </Patient>
    </resource>
</entry>
    <entry>
    <fullUrl value="https://my-url/Patient/40-141227"/>
    <resource>
        <Patient xmlns="http://hl7.org/fhir">
            <id value="40-141227247"/>
            <link>
                <other>
                    <reference value="Patient/31-124760"/>
                </other>
                <type value="seealso"/>
            </link>
            <link>
                <other>
                    <reference value="Patient/40-133347"/>
                </other>
                <type value="seealso"/>
            </link>
        </Patient>
    </resource>
</entry>

schema.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://hl7.org/fhir" xmlns:xhtml="http://www.w3.org/1999/xhtml" targetNamespace="http://hl7.org/fhir" elementFormDefault="qualified" version="1.0">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
<xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="fhir-xhtml.xsd"/>
  <xs:element name="Bundle">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="id"/>
        <xs:element ref="meta"/>
        <xs:element ref="type"/>
        <xs:element ref="total"/>
        <xs:element ref="link"/>
        <xs:element ref="entry"/>
      </xs:sequence>
   <!--  <xs:attribute name="value" use="required"/> -->
    </xs:complexType>
  </xs:element>
  <xs:element name="meta">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="lastUpdated"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="lastUpdated">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="total">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="entry">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="fullUrl"/>
        <xs:element ref="resource"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="fullUrl">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:anyURI"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="resource">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Patient"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Patient">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="id"/>
        <xs:element maxOccurs="unbounded" ref="link"/>
      </xs:sequence>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="id">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="type">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="link">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="other"/>
          <xs:element ref="type"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="relation"/>
          <xs:element ref="url"/>
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="other">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="reference"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="reference">
    <xs:complexType>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="relation">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="url">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:anyURI"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

我已经在线检查了是否可以找到解决某个特定问题的线索,还没有运气。我会在这里帮忙。

2 个答案:

答案 0 :(得分:0)

在您的<xs:element name="Patient">定义中,只需对值属性使用“可选”,例如

<xs:attribute name="value" use="optional"/>

答案 1 :(得分:0)

您的实例在官方FHIR模式下有效。给定已发布的架构片段中带有注释的“值”元素,看来您已经以某种方式调整了架构。如果您坚持使用官方架构,就可以了。