XML,XSD和XSLT学生的项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML,XSD和XSLT学生的项目相关的知识,希望对你有一定的参考价值。
我必须为我的大学项目制作xml,xml模式和xslt。我从验证器收到3个错误。你能帮助我吗?那就是我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xslt"?>
<mojehobby>
<naglowek>
<naglowek_glowny>
Moje hobby
</naglowek_glowny>
<podnaglowek>
muzyka
</podnaglowek>
</naglowek>
<images>
<zdjecie src="AP4.jpg" href="https://www.facebook.com/AfterPeppers/"></zdjecie>
<zdjecie src="COSTER1.jpg" href="https://www.facebook.com/Coster-433619970040235/"></zdjecie>
<zdjecie src="TSF2.jpg" href="https://www.facebook.com/The-Second-Floor-200535016957502/"></zdjecie>
</images>
<dana>
<artykul>
<tytul>
Historia
</tytul>
<naglowek_artykulu>
O muzyce i nauce
</naglowek_artykulu>
<tresc_artykulu>
<tresc>
Some text
</tresc>
</tresc_artykulu>
</artykul>
</dana>
<o_artykule>
<autor>
<imie_autora>Krzysztof</imie_autora>
<nazwisko_autora>Stencel</nazwisko_autora>
</autor>
<data>15.12.2019</data>
</o_artykule>
<stopka href="">
<tresc></tresc>
<data></data>
</stopka>
</mojehobby>
那是XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="krotki_string">
<xs:restriction base="xs:string">
<xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="article">
<xs:restriction base="xs:string">
<xs:minLength value="400"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="imie">
<xs:restriction base="xs:string">
<xs:maxLength value="25"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nazwisko">
<xs:restriction base="xs:string">
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="data">
<xs:restriction base="xs:string">
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="tresc">
</xs:complexType>
<xs:complexType name="image">
<xs:attribute name="src"/>
<xs:attribute ref="href"/>
</xs:complexType>
<xs:complexType name="images">
<xs:sequence>
<xs:element name="zdjecie" type="image" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tresc_artykulu">
<xs:sequence>
<xs:element name="tresc" type="article" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="footer">
<xs:sequence>
<xs:element name="tresc" type="krotki_string"/>
<xs:element name="data" type="data"/>
</xs:sequence>
</xs:complexType>
<xs:element name="o_artykule">
<xs:complexType>
<xs:sequence>
<xs:element name="autor" type="simpleType">
<xs:complexType>
<xs:sequence>
<xs:element name="imie_autora" type="imie"/>
<xs:element name="nazwisko_autora" type="nazwisko"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="data" type="data"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="naglowek">
<xs:complexType>
<xs:sequence>
<xs:element name="naglowek_glowny" type="krotki_string"/>
<xs:element name="podnaglowek" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dana">
<xs:sequence>
<xs:complexType name="artykul">
<xs:sequence>
<xs:element name="tytul" type="krotki_string"/>
<xs:element name="naglowek_artykulu" type="krotki_string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tresc_artykulu">
<xs:sequence>
<xs:element name="tresc" type="article" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:sequence>
</xs:element>
<xs:element name="mojehobby">
<xs:complexType>
<xs:sequence>
<xs:element ref="naglowek"/>
<xs:element name="images" type="images"/>
<xs:element ref="dana"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="href"/>
</xs:schema>
并且有错误:
验证87,15s4s-elt-must-match。1:“ dana”的内容必须匹配(注释?,(simpleType | complexType)?((唯一| key | keyref)*))。发现问题始于:sequence。
验证64,47 src-element.3:元素'autor'同时具有'type'属性和'anonymous type'子元素。元素仅允许其中之一。
验证40,15 cvc-complex-type.2.4.d:发现无效的内容,从元素'o_artykule'开始。目前尚无子元素。
关于错误:
错误
验证87,15s4s-elt-must-match。1:“ dana”的内容必须匹配(注释?,(simpleType | complexType)?((唯一| key | keyref)*))。发现问题始于:sequence。
被发射,因为您忘记了将xs:sequence包装在xs:complexType中。您在以下xs:element
mojehobby
中正确完成了操作。接下来,也是在
dana
中,您试图在序列中定义xs:complexTypes-不允许这样做。合并xs:sequence中的所有元素将对其进行修复。错误
验证64,47 src-element.3:元素'autor'同时具有'type'属性和'anonymous type'子元素。元素仅允许其中之一。
简单地是指您尝试将两种类型应用于同一元素的事实。摆脱一个,你会没事的。 (这里:
type
属性)错误
验证40,15 cvc-complex-type.2.4.d:发现无效的内容,从元素'o_artykule'开始。目前尚无子元素。
确实发生,因为您忘记了将xs:element包含为
mojehobby
规则的子级。这也适用于stopka
及其子代。
我还向XSD文件添加了一些提示。由于内容无效,它仍然会引发错误:多个节点的内容超过了krotki_string
中定义的xs:maxLength限制。但是,这是调试的工作版本:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="krotki_string">
<xs:restriction base="xs:string">
<xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="article">
<xs:restriction base="xs:string">
<xs:minLength value="400"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="imie">
<xs:restriction base="xs:string">
<xs:maxLength value="25"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nazwisko">
<xs:restriction base="xs:string">
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="data">
<xs:restriction base="xs:string">
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="tresc">
</xs:complexType>
<xs:complexType name="image">
<xs:attribute name="src"/>
<xs:attribute ref="href"/>
</xs:complexType>
<xs:complexType name="images">
<xs:sequence>
<xs:element name="zdjecie" type="image" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tresc_artykulu">
<xs:sequence>
<xs:element name="tresc" type="article" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="footer">
<xs:sequence>
<xs:element name="tresc" type="krotki_string"/>
<xs:element name="data" type="data"/>
</xs:sequence>
<xs:attribute ref="href"/>
<!-- Note that attribute definitions have to appear at the end of the complex type - here referencing the attribute at the end of the file -->
</xs:complexType>
<xs:element name="o_artykule">
<xs:complexType>
<xs:sequence>
<xs:element name="autor">
<xs:complexType>
<xs:sequence>
<xs:element name="imie_autora" type="imie"/>
<xs:element name="nazwisko_autora" type="nazwisko"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="data" type="data"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="naglowek">
<xs:complexType>
<xs:sequence>
<xs:element name="naglowek_glowny" type="krotki_string"/>
<xs:element name="podnaglowek" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dana">
<xs:complexType>
<xs:sequence>
<xs:element name="artykul">
<xs:complexType>
<xs:sequence>
<xs:element name="tytul" type="krotki_string"/>
<xs:element name="naglowek_artykulu" type="krotki_string"/>
<xs:element name="tresc_artykulu" type="tresc_artykulu" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mojehobby">
<xs:complexType>
<xs:sequence>
<xs:element ref="naglowek"/>
<xs:element name="images" type="images"/>
<xs:element ref="dana"/>
<xs:element ref="o_artykule"/> <!-- Added element for reference type -->
<xs:element name="stopka" type="footer"/> <!-- Added element for defined type -->
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="href"/>
</xs:schema>
希望这会有所帮助。
以上是关于XML,XSD和XSLT学生的项目的主要内容,如果未能解决你的问题,请参考以下文章
使用 XSD、目录解析器和用于 XSLT 的 JAXP DOM 验证 XML