ID Referenz aus bestimmtem Bereich definieren
Marcel
- xml
Hallo zusammen
Mit IDREF ist es ja möglich in der DTD eine Referenz auf eine existierende andere Node ID zu "erzwingen". Ist es auch Möglich zusätzlich eine bestimmte Node, bzw. deren Subnodes als ID's zu erzwingen?
Bsp:
<IDS>
<ID id="1" />
<ID id="2" />
</IDS>
<Objekte>
<Objekt id="10">A</Objekt >
<Objekt id="10">B</Objekt > // Gültige IDREF
</Objekte>
Ich möchte nun erreichen, dass alle id's der Objekte auf eine id aus ID verweisen müssen. Das heisst die id von Objekt B sollte ungültig sein...
Ist das möglich?
Gruss Marcel
Hi,
irgendwie glaube ich, du hast da was mit IDREF noch nicht verstanden, oder ich dein Problem nicht...
<!ELEMENT ID EMPTY>
<!ATTLIST ID id #ID>
<!ELEMENT Objekt (#PCDATA)>
<!ATTLIST Objekt id #IDREF>
Damit ist sichergestellt, dass die id von Objekt auf eine gültige id von ID verweist. Der Parser sollte in dem Fall bei der Validierung den Fehler werfen, sofern du ihm mitgeteilt hast wo er die entsprechende DTD findet.
MfG
Rouven
Hi,
<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT db (connections,queries)>
<!ELEMENT connections (connection*)>
<!ELEMENT connection EMPTY>
<!ATTLIST connection
id ID #REQUIRED
type (A|B|C) #REQUIRED
string CDATA #REQUIRED
>
<!ELEMENT queries (query*)>
<!ELEMENT query (command)>
<!ATTLIST query
id ID #REQUIRED
connection IDREF #REQUIRED
>
<!ELEMENT command (#PCDATA)>
-----------------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE db SYSTEM "db.dtd">
<db>
<connections>
<connection id="a" type="A" string="dsn=abc" />
</connections>
<queries>
<query id="q1" connection="a">
<command>
SELECT * FROM xyz
</command>
</query>
<query id="q2" connection="q2"> //*
<command>
SELECT name FROM xyz
</command>
</query>
</queries>
</db>
* Definierte connection ist eine gültige ID. Es sollte aber nur ID "a" eine gültige ID darstellen...?
Gruss Marcel
Ah, das meinst du. Nein, das geht mittels DTD nicht. Sowas lässt sich nur mit hilfe von key und keyref in XML-Schema lösen.
MfG
Rouven