UT4.1 Biblioteca

Biblioteca
XML Biblioteca
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE biblioteca SYSTEM "01.dtd">
<biblioteca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="01.xsd">
    <libro id="l1" genero="Comedia" idioma="Español" formato="impreso">
        <titulo>Titulo 1</titulo>
        <autores>
            <autor>
                <nombre></nombre>
                <apellido></apellido>
                <nacionalidad></nacionalidad>
            </autor>
        </autores>
        <año>2025</año>    
    </libro>
    <libro id="l2" genero="Comedia" idioma="Español" formato="impreso">
        <titulo>Titulo 1</titulo>
        <autores>
        <autor>
            <nombre></nombre>
            <apellido></apellido>
            <nacionalidad></nacionalidad>
        </autor>
        </autores>
        <año>2026</año>  
    </libro>
</biblioteca>
DTD Biblioteca
<!ELEMENT biblioteca (libro)+>
<!ATTLIST biblioteca xmlns:xsi CDATA #IMPLIED
                xsi:noNamespaceSchemaLocation CDATA #IMPLIED>
<!ELEMENT libro (titulo,autores,año)>
<!ELEMENT autores (autor+)>
<!ELEMENT autor (nombre,apellido,nacionalidad)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT genero (#PCDATA)>
<!ELEMENT año (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellido (#PCDATA)>
<!ELEMENT nacionalidad (#PCDATA)>
<!ATTLIST libro id ID #REQUIRED>
<!ATTLIST libro genero CDATA #IMPLIED>
<!ATTLIST libro idioma CDATA  #IMPLIED >
<!ATTLIST libro formato (impreso|digital) "impreso">
<!ATTLIST libro referencia IDREF #IMPLIED>
XSD Biblioteca
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="biblioteca">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="libro" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="titulo">
                                <xs:annotation>
                                    <xs:documentation>
                                        El número máximo de caracteres son 50
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:maxLength value="50"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>

                            <xs:element name="autores">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="autor" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="nombre" type="xs:string"/>
                                                    <xs:element name="apellido" type="xs:string"/>
                                                    <xs:element name="nacionalidad" type="xs:string" default="Español"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            
                            <xs:element name="año" type="xs:gYear"/>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:ID" use="required"/>
                        <xs:attribute name="genero" type="xs:string" use="optional"/>
                        <xs:attribute name="idioma" type="xs:string" use="optional" default="Español"/>
                        <xs:attribute name="formato" use="optional">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:pattern value="impreso|digital"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="referencia" type="xs:IDREF" use="optional"/>

                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>