了解XML架构数据类型

时间:2014-10-05 22:42:12

标签: xml xsd

我正在完成XML任务,我不确定我是否正确地执行此操作。 它要求:

•grantType,基于ID数据类型并遵循正则表达式模式 “[A-Z] {6} - \ d {4} - \ d {2}”

•fundingType基于字符串数据类型并限制为以下值: 联邦,州,地方和私人

让我失望的部分是当它要求遵循正则表达式模式时,我想输入reg模式或者它是否就像我在下面那样?

这是我到目前为止所做的:

<?xml version="1.0" encoding="UTF-8"?>

<grant grantNum="NIHCCC-4481-05" funding="federal government">

   <title>NIH Clinical Cancer Basic Research Grant</title>
   <agency>National Institute of Health</agency>
   <department>University Hospital Clinical Cancer Center</department>
   <summary>Basic NIH support funding for current and future Phase 1 through
            Phase 3 cancer clinical trials.</summary>
   <initiated>2006-07-01</initiated>
   <expires>2010-06-30</expires>
   <coordinator>Alice Walters</coordinator>

</grant>

我的架构:

 <?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    xmlns:"http://uhosp.edu/grant/ns"
    targetNamespace="http://uhosp.edu/grant/ns"

 <xs:element name="grant">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="title"/>
        <xs:element type="xs:string" name="agency"/>
        <xs:element type="xs:string" name="department"/>
        <xs:element type="xs:string" name="summary"/>
        <xs:element type="xs:date" name="initiated"/>
        <xs:element type="xs:date" name="expires"/>
        <xs:element type="xs:string" name="coordinator"/>
      </xs:sequence>
      <xs:attribute type="xs:string" name="grantNum"/>
      <xs:attribute type="xs:string" name="funding"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

2 个答案:

答案 0 :(得分:3)

您需要定义一个名为grantType的simpleType,它是使用带有您给定的正则表达式的模式facet通过限制派生的xs:string,然后您需要将属性grantNum声明为类型grantType,而不是类型xs:字符串。

答案 1 :(得分:2)

这是您需要的XSD ..

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://uhosp.edu/grant/ns"
    targetNamespace="http://uhosp.edu/grant/ns">
    <xs:element name="grant">
        <xs:complexType>
            <xs:sequence>
                <xs:element type="xs:string" name="title"/>
                <xs:element type="xs:string" name="agency"/>
                <xs:element type="xs:string" name="department"/>
                <xs:element type="xs:string" name="summary"/>
                <xs:element type="xs:date" name="initiated"/>
                <xs:element type="xs:date" name="expires"/>
                <xs:element type="xs:string" name="coordinator"/>
            </xs:sequence>
            <xs:attribute type="grantType" name="grantNum"/>
            <xs:attribute type="fundingType" name="funding"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="fundingType" type="fundingType"/>
    <xs:simpleType name="fundingType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="private"/>
            <xs:enumeration value="local"/>
            <xs:enumeration value="state"/>
            <xs:enumeration value="federal"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="grantType" type="grantType"/>
    <xs:simpleType name="grantType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{6}-\d{4}-\d{2}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>