Как вы объявляете обязательный атрибут в схеме XML, который ссылается на элемент? - PullRequest
0 голосов
/ 27 февраля 2019

Итак, я работал над этими файлами XML и XSD и пытался проверить его, но получил ошибку для моего атрибута cid в моем файле XSD и другую ошибку в моем XML, которая может быть связана с файлом XSD при закрытиитег каталога.

ошибка в XML-состояниях "cvc-complex-type.2.4.b: содержимое элемента 'catalog' не завершено. Один из '{" ": photo," ": name} 'ожидается. "

 <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!--
   New Perspectives on XML
   Tutorial 3
   Case Problem 1

   Catalog of photos from the Our Lady of Bergen Historical Society
   Author: Joshua Carpentier
   Date:   2/20/19

   Filename:         catalog.xml
   Supporting Files: catalog.xsd
-->

<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="catalog.xsd"
>

<!-- did you want us to included this attribute not sure xsi:noNamespaceSchemaLocation="catalog.xsd"-->
   <photo cid="c1748" donatedBy="John Borelli">
      <name metadata="tunis cooper property museum">Tunis R. Cooper property</name>
      <description>
      <![CDATA[ 
         This photo was taken by John Borelli's great-grandfather. It is believed to have been taken around 1830.
         David Demarest originally purchased the site of the chair factory in 1663. This site was under the ownership 
         of the Demarest family until 1758.  The property is listed in the National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1830</date>
      <images>
         <img src="1748a.jpg" />
         <img src="1748b.jpg" />
      </images>
   </photo>

   <photo cid="c1749" donatedBy="John Borelli">
      <name metadata="tunis cooper property museum">Tunis R. Cooper property</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1950</date>
      <images>
         <img src="1749a.jpg" />
      </images>
   </photo>

   <photo cid="c1411" donatedBy="Saint Johns Catholic Church">
      <name metadata="saint johns catholic church">Saint Johns Church</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>      
      <date>1921</date>
   </photo>


   <photo cid="c2003" donatedBy="Linda Choo">
      <name metadata="bergenfield elementary school">Bergenfield School</name>
      <description>
      <![CDATA[ 
         The No. 5 Public School, a.k.a. Bergenfield School
      ]]>
      </description>
      <date>circa 1920</date>
      <images>
         <img src="2003a.jpg" />
         <img src="2003b.jpg" />
      </images>
   </photo>

   <photo cid="c2078" donatedBy="Maria Giodelli">
      <name metadata="coopers pond water">Coopers Pond</name>
      <description>
      <![CDATA[ 
         A favorite spot where we used to go hang out as kids.  The picture shows my brothers Robert and Michael.
      ]]>
      </description>
      <date>May 4, 1941</date>
      <images>
         <img src="2078a.jpg" />
      </images>
   </photo>

   <photo cid="c2079" donatedBy="Linda Uffington">
      <name metadata="watch timekeeping pocket railway">Pocket Watch</name>
      <description>
      <![CDATA[ 
         A more recent picture of the property taken by the Borelli family.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1870</date>
      <images>
         <img src="2079a.jpg" />
         <img src="2079b.jpg" />
      </images>
   </photo>

   <photo cid="c3233">
      <name metadata="hotel">Bergenfield Hotel</name>
      <description>
      <![CDATA[ 
         The Knollfield Hotel was known as the Bergenfield Hotel.  The property is listed in the 
         National and New Jersey Registers of Historic Places.
      ]]>
      </description>
      <date>circa 1920</date>
   </photo>

   <photo cid="c3433">
      <name metadata="sweeney coal fuel">Sweeney Coal</name>
      <description>
      <![CDATA[ 
         Sweeney Fuel Company located near New Bridge Road and railroad tracks.
      ]]>
      </description>
      <date>1920</date>
      <images>
         <img src="3433a.jpg" />
         <img src="3433b.jpg" />
         <img src="3433c.jpg" />
      </images>
   </photo>

</catalog>

ошибка в состояниях XSD" s4s-elt-must-match.1: содержание' catalog 'должно совпадать (annotation ?,(simpleType | complexType) ?, (unique | key | keyref) *)). Обнаружена проблема, начиная с: attribute. "

Пока что я создал simpleType для cidType на основе типа данных ID и ограничен шаблоном регулярного выражения c \ d {4}, а также создал еще один simpleType srcType на основе строкового типа данных, который ограничен обычнымшаблон выражения [a-zA-Z0-9] +. jpg

именно этот вопрос 6b - это проблема, я не уверен, что с моим кодом что-то не так в отношении других шагов.

Объявите элемент фото, содержащий следующую последовательность вложенных дочерних элементов - имя, описание, дата и изображения.Установите следующие свойства для вложенных элементов:

a.Все дочерние элементы должны содержать строковые данные.Элемент name также должен поддерживать атрибут метаданных.

b.Атрибут cid является обязательным.Атрибут donatedBy является необязательным.

Объявите элемент img.Он не имеет содержимого и содержит обязательный атрибут src. Объявите следующие атрибуты и элементы:

a.Метаданные атрибута должны иметь строковый тип данных.

b.Атрибут cid должен иметь тип данных cidType.

c.Атрибут src должен иметь тип данных srcType.

d.Атрибут donatedBy должен иметь строковый тип данных.

e.Описание элемента должно иметь строковый тип данных.

f.Элемент date должен иметь строковый тип данных.

 <?xml version="1.0" encoding="UTF-8" ?>
<!--
   New Perspectives on XML
   Tutorial 3
   Case Problem 1

   Catalog of photos from the Our Lady of Bergen Historical Society
   Author: Joshua Carpentier
   Date:   2/20/19

   Filename:         catalog.xsd
   Supporting Files: catalog.xml
-->      
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:simpleType name="cidType"> 
<xs:restriction base ="xs:ID"> 
<xs:pattern value= "c\d{4}"/> 
</xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="srcType"> 
<xs:restriction base ="xs:string"> 
<xs:pattern value= "[a-zA-Z0-9]+.jpg"/> 
</xs:restriction> 
</xs:simpleType> 

<xs:element name="catalog">



<xs:complexType> 
 <xs:sequence>
 <xs:element name="photo" minOccurs="1" maxOccurs="unbounded"/>
 <xs:element name="name" type="xs:string"/>
 <xs:element name="description" type="xs:string"/>
 <xs:element name="date" type="xs:string"/>
 <xs:element name="images" type="xs:string"/>
 </xs:sequence>
</xs:complexType> 


<xs:attribute name="cid" ref="cidType" use="required"/>
<xs:attribute name="donatedBy" use="optional" type="string"/>
<xs:attribute name="metadata"/>



<xs:element name="img" use="required" src=".jpg"/>
<xs:element name="metadata" type="xs:string"/>
<xs:element name="cid"  type="cidType"/>
<xs:element name="src"  type="srcType"/>
 </xs:element>

</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...