Hi,
Aber sollte XHTML5 nicht auch als XML verarbeitbar sein?
Ja - aber ist es das durch sowas nicht mehr?
Solch ein XML
<?xml version='1.0'?>
<root>
<elem1 id="$">elem1 inhalt</elem1>
<elem2 id="$">elem1 inhalt</elem2>
<elem3 id="#">elem1 inhalt</elem3>
</root>
„fressen“ bspw. PHPs SimpleXML und die DOM Extension problemlos und ohne zu meckern. (Nicht, dass ich daraus jetzt fachliche Korrektheit unbedingt ableiten wollte.)
Das Manual zu DOMDocument::getElementById sagt bspw.,
“For this function to work, you will need either to set some ID attributes with DOMElement::setIdAttribute or a DTD which defines an attribute to be of type ID. In the later case, you will need to validate your document with DOMDocument::validate or DOMDocument->validateOnParse before using this function.”
Nach meinem Verständnis ist id erst mal ein Attribut wie jedes andere auch.
Wenn man ihm die „Sonderbedeutung“ einer XML-ID geben möchte, muss man das entweder in der DTD (gibt's nicht für HTML5) festlegen, oder bspw. mittels Namespace-Angabe explizit darauf hinweisen, also xml:id stattdessen nutzen.
Wenn ich letzteres mache (xml:id="$"), dann geben mir sowohl SimpleXML als auch DOMDocument entsprechende Warnings aus,
validity error : xml:id : attribute value $ is not an NCName
Und selbst wenn ich aus dem zwei mal benutzten $ einfach ein doppeltes xml:id="a" mache, bekomme ich
element elem2: validity error : ID a already defined
Benutze ich hingegen nur id="a" und das doppelt, gibt es kein Gemecker.
MfG ChrisB
The most exciting phrase to hear in science, the one that heralds new discoveries, is not “Eureka!” but “That's funny...” [Isaac Asimov]