Sziasztok!
Adott az alábbi két fájl:
minta.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com"
xmlns="http://example.com"
elementFormDefault="qualified">
...
minta.xml
<?xml version="1.0" encoding="utf-8"?>
<DOCROOT xmlns="http://example.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://example.com minta.xsd">
...
Ez így szépen validálódik.
Viszont, ha kitörlöm a sémából a xmlns="http://example.com" sort, akkor azt modja:
Schema Representation Constraint: Namespace '' is referenced without declaration
XMLCopyeditor-t használok a validálásra.
A kérdés igazándiból az, hogy miért szükséges a sémában az xml névterének a megadása, mint saját default névtér, amikor minden elem az XMLSchema névtérből van benne? Mit jelent és miért kell ezt megadni, hogy menjen a dolog?
Remélem valaki el tudja ezt magyarázni érthetően, mert a webes keresgéléssel nem találtam egyértelmű választ.
Köszi!
pentike
- 1364 megtekintés
Hozzászólások
Ha a DOCROOT elől kitörlöd a namespace-edet, akkor az xsi namespace-en kívül nem marad semmi, abban is csak az xsd-t definiálod, illetve definiálnád egy nem létező namespace-hez (amit kitöröltél)
Ez így jóez? Valami XML guru majd tovább ragozza :)
- A hozzászóláshoz be kell jelentkezni
Nem a DOCROOT tag-ből törlöm ki az xmlns="http://example.com" -ot, hanem a sémából.
Azt nem értem, hogy ha a sémában megadom, hogy targetNamespace="http://example.com" az miért nem elég. Miért kell a sémában azt is megadni, hogy xmlns="http://example.com" amikor az magára a sémára vonatkozik.
- A hozzászóláshoz be kell jelentkezni
W3CSchool szerint:
This fragment: xmlns="http://www.w3schools.com" indicates that the default namespace is "http://www.w3schools.com". Ha ennél több kell, akkor valami w3c specifikációt keressél szerintem.
- A hozzászóláshoz be kell jelentkezni
Igen, ezt én is olvastam. Az, hogy az xml-ben meg kell adni és akkor ez az alap névtér - tehát nem kell hozzá prefix - az oké, de az xsd-ben minek kell megadni?
- A hozzászóláshoz be kell jelentkezni
Gondolom xsd-nek is kell egy default namespace, mivel maga is egy xml. Próbáld meg, hogy kitörlöd xmlns:xs -ből az ":xs"-t. De itt részemről over&out, mert ennél tovább nem tudom én sem :D
- A hozzászóláshoz be kell jelentkezni