Dobrý deň!
Skúšal niekto validovať xml súbor v ktorom použil xmlns? Ak áno fungovalo vám to?
Fórum › XML / XSL(T)
Xmlns
Možno to bude vyzerať blbo, ale mám na mysli toto. Majme:
<?xml version="1.0" ?>
<doc xmlns="nejaky_subor.dtd">
<item1>a</item1>
<item2>b</item2>
<item3>c</item3>
<prefix:vlastny xmlns:prefix="moja_specifikacia.dtd">
<prefix:vlastna_polozka>d</prefix:vlastna_polozka>
</prefix:vlastny>
</doc>
Ako, cez čo overím validitu tohoto xml dokumentu? Je chyba do xmlns písať súbory dtd?
Do xmlns můžeš teoreticky napsat asi cokoliv. Jenže pokud si myslíš, že to DTD, co jsi tam napsal, má nějaký význam, tak to se pleteš. DTD definice se píše jinam. xmlns je jen namespace, prostor jmen, neboli něco jako když řekneš "tyhle tagy jsem si vymyslel já, já k nim definoval význam, tak si je nepleťte s tagama z xhtml, svg nebo tak, protože to je něco jinýho". A do xmlns se tedy píše nějaký identifikátor toho, komu ten namespace patří. Třeba XHTML má http://www.w3.org/1999/xhtml
xmlns se v XML zcela běžně používá, takže by ho měla podporovat i validace (aspoň proti XML Schema, nevím, jak na tom je DTD, které vzniklo před XML).
Pokud vytváříš nový projekt (nebo jen experimentuješ), pak se zaměř spíš na XML schémata. Používají se daleko častěji než DTD, protože nabízejí daleko více možností. Pokud jde o jmenné prostory, podívej se na jejich použití http://www.kosek.cz/xml/schema/wxs.html#wxs-ns.
Dal jsem dohromady jednoduchý příklad schémat s více jmennými prostory.
CustomerManagement.xsd
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ri="http://www.programujte.com/ResourceInventory/Schema"
xmlns="http://www.programujte.com/CustomerManagement/Schema"
targetNamespace="http://www.programujte.com/CustomerManagement/Schema"
elementFormDefault="qualified">
<xsd:import namespace="http://www.programujte.com/ResourceInventory/Schema" schemaLocation="ResourceInventory.xsd" />
<xsd:complexType name="CustomerType">
<xsd:sequence>
<xsd:element name="firstName" type="xsd:string"/>
<xsd:element name="lastName" type="xsd:string"/>
<xsd:element name="segment" type="SegmentType" />
<xsd:element name="uri" type="ri:ExtensionType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="SegmentType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="DUMMY" />
<xsd:enumeration value="SMB" />
<xsd:enumeration value="LB" />
<xsd:enumeration value="ENT" />
<xsd:enumeration value="VIP" />
<xsd:enumeration value="EMPLOYEE" />
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="Customer" type="CustomerType" />
</xsd:schema>
ResourceInventory.xsd<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.programujte.com/CustomerManagement/Schema"
targetNamespace="http://www.programujte.com/ResourceInventory/Schema"
elementFormDefault="qualified">
<xsd:complexType name="ExtensionType">
<xsd:sequence>
<xsd:element name="Uri" type="xsd:string"/>
<xsd:element name="Type" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
CustomerElement.xml<?xml version="1.0" encoding="UTF-8"?>
<Customer xmlns="http://www.programujte.com/CustomerManagement/Schema"
xmlns:ri="http://www.programujte.com/ResourceInventory/Schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.programujte.com/CustomerManagement/Schema CustomerManagement.xsd">
<firstName>Tonda</firstName>
<lastName>Habas</lastName>
<segment>DUMMY</segment>
<uri>
<ri:Uri>ISDN</ri:Uri>
<ri:Type>420777123456</ri:Type>
</uri>
</Customer>
Poznámka: Řádek 4 a 5 v XML (CustomerElement.xml) může být vynechán, pokud se jiným způsobem namapuje zdrojové schéma.Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze