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'开始。目前尚无子元素。

答案

关于错误:

  1. 错误

    验证87,15s4s-elt-must-match。1:“ dana”的内容必须匹配(注释?,(simpleType | complexType)?((唯一| key | keyref)*))。发现问题始于:sequence。

    被发射,因为您忘记了将xs:sequence包装在xs:complexType中。您在以下xs:element mojehobby中正确完成了操作。

  2. 接下来,也是在dana中,您试图在序列中定义xs:complexTypes-不允许这样做。合并xs:sequence中的所有元素将对其进行修复。

  3. 错误

    验证64,47 src-element.3:元素'autor'同时具有'type'属性和'anonymous type'子元素。元素仅允许其中之一。

    简单地是指您尝试将两种类型应用于同一元素的事实。摆脱一个,你会没事的。 (这里:type属性)

  4. 错误

    验证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

如何使用 XSLT 显示 XSD 验证的 XML

使用 xslt 按升序对 xsd 格式的 XML 进行排序

根据 XSD 兼容 XML 输入 -> XSD 兼容 XML 输出的 1:1 映射从 XSD 生成 XSLT 文件

基于 XSD 变化的动态 XSLT 生成

使用 xslt 转换多个 xml 模式文档