Style Sheets können durch Verwendung einer Processing Instruction, deren Ziel xml-stylesheet ist, mit einem XML-Dokument [XML10] verknüpft werden. Diese Processing Instruction folgt dem Verhalten von <LINK REL="stylesheet"> in HTML 4.0 [HTML40].
Die xml-stylesheet-Processing-Instruction wird in der gleichen Weise analysiert (parsed) wie ein Start-tag, mit der Ausnahme, dass Entities, abgesehen von den vordefinierten Entities, nicht referenziert werden dürfen.
Die folgende Grammatik wird unter Verwendung der gleichen Notation, wie für die Grammatik in der XML-Empfehlung [XML10], angegeben. Symbole in der Grammatik, die hier nicht definiert sind, sind in der XML-Empfehlung definiert.
xml-stylesheet-Processing-Instruction | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
In PseudoAttValue wird eine CharRef oder eine PredefEntityRef in der gleichen Weise interpretiert, wie in einem normalen XML-Attributwert. Der tatsächliche Wert des Pseudoattributs ist der Wert, der sich ergibt, nachdem jede Referenz durch das Zeichen, das es referenziert, ersetzt wurde. Diese Ersetzung wird nicht automatisch durch einen XML-Prozessor durchgeführt.
Die xml-stylesheet-Processing-Instruction ist ausschließlich im Prolog eines XML-Dokuments zulässig. Die Syntax von XML beschränkt, wo Processing Instructions im Prolog erlaubt sind; die xml-stylesheet-Processing-Instruction ist an jeder Stelle im Prolog erlaubt, die diese Beschränkungen erfüllt.
Wenn die xml-stylesheet-Processing-Instruction im externen Teil der DTD oder in einem Parameter Entity erscheint, so ist es möglich, dass sie von einem nicht validierenden XML-Prozessor nicht verarbeitet wird (siehe [XML10]).
Die folgenden Pseudoattribute sind definiert:
href CDATA #REQUIRED type CDATA #REQUIRED title CDATA #IMPLIED media CDATA #IMPLIED charset CDATA #IMPLIED alternate (yes|no) "no"
Die Bedeutung der Pseudoattribute ist exakt die von <LINK REL="stylesheet"> in HTML 4.0, mit der Ausnahme des alternate-Pseudoattributs. Falls alternate="yes" angegeben ist, hat die Processing Instruction die Bedeutung von <LINK REL="alternate stylesheet"> anstatt von <LINK REL="stylesheet">.
Da der Wert des href-Attributs eine URI-Referenz ist, kann es ein relativer URI sein und es kann einen fragmentarischen Bezeichner (identifier) enthalten. Insbesondere kann die URI-Referenz einen nur fragmentarischen Bezeichner enthalten. Solch eine URI-Referenz ist eine Referenz auf ein Teil des Dokuments, das die xml-stylesheet-Processing-Instruction enthält (siehe [RFC2396]). Die Konsequenz ist, dass es die xml-stylesheet-Processing-Instruction erlaubt, Style Sheets in dasselbe Dokument einzubinden, wie die xml-stylesheet-Processing-Instruction.
In einigen Fällen können Style Sheets mit einem XML-Dokument extern in Bezug auf das Dokument verbunden werden. Zum Beispiel erlaubten frühere Versionen von HTTP [RFC2068] (Abschnitt 19.6.2.4), Style Sheets mit einem XML-Dokument im Sinne des Link-Headers zu verknüpfen. Es wird angenommen, dass alle Verbindungen zu Style Sheets, die extern zum Dokument sind, auftreten, bevor Verbindungen durch die xml-stylesheet-Processing-Instructions spezifiziert werden. Dies ist das gleiche wie in HTML 4.0 (siehe Abschnitt 14.6).
Hier sind einige Beispiele von HTML 4.0 mit der korrespondierenden Processing Instruction:
<LINK href="mystyle.css" rel="style sheet" type="text/css"> <?xml-stylesheet href="mystyle.css" type="text/css"?> <LINK href="mystyle.css" title="Compact" rel="stylesheet" type="text/css"> <?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?> <LINK href="mystyle.css" title="Medium" rel="alternate stylesheet" type="text/css"> <?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium" type="text/css"?>
Mehrere xml-stylesheet-Processing-Instructions sind ebenfalls mit exakt der gleichen Bedeutung wie LINK REL="stylesheet" erlaubt. Zum Beispiel wäre
<LINK rel="alternate stylesheet" title="compact" href="small-base.css" type="text/css"> <LINK rel="alternate stylesheet" title="compact" href="small-extras.css" type="text/css"> <LINK rel="alternate stylesheet" title="big print" href="bigprint.css" type="text/css"> <LINK rel="stylesheet" href="common.css" type="text/css">
äquivalent zu
<?xml-stylesheet alternate="yes" title="compact" href="small-base.css" type="text/css"?> <?xml-stylesheet alternate="yes" title="compact" href="small-extras.css" type="text/css"?> <?xml-stylesheet alternate="yes" title="big print" href="bigprint.css" type="text/css"?>