【问题标题】:Adding namespace to an xsd element将命名空间添加到 xsd 元素
【发布时间】:2019-11-17 14:51:48
【问题描述】:

我花了很多时间试图使这个 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>

我已经在网上查了一下,看看我是否能找到解决某个特定元素的线索,但还没有运气。我会在这里提供任何帮助。

【问题讨论】:

    标签: xml xsd hl7-fhir


    【解决方案1】:

    在您的 &lt;xs:element name="Patient"&gt; 定义中,只需使用“可选”作为 value 属性,例如

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

    【讨论】:

      【解决方案2】:

      您的实例对官方 FHIR 架构有效。鉴于发布的架构片段中的注释“值”元素,您似乎已经以某种方式调整了架构。如果你坚持使用官方架构,你会没事的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        相关资源
        最近更新 更多