2008-11-10 2 views
3

Je sais que CSS peut être utilisé pour contrôler la présentation de (X) HTML dans les navigateurs modernes. J'avais l'impression que c'était aussi possible pour du XML arbitraire. (Je me trompe?)Comment puis-je mettre en forme XML avec CSS pour l'afficher dans un navigateur sans d'abord le transformer en (X) HTML?

Un exemple concret: étant donné le code XML suivant

<log> 
    <entry revision="1"> 
    <author>J Random Hacker</author> 
    <message>Some pithy explanation</message> 
    </entry> 
</log> 

J'aimerais associer un CSS avec cette XML telle que vue dans un hôtel moderne (WebKit, FireFox) navigateur, je vois quelque chose comme:

+----------------------------------+ 
| revision | 1      | 
+----------------------------------+ 
| author | J Random Hacker  | 
+----------------------------------+ 
| message | Some pithy explanation| 
+----------------------------------+ 

Où mon oh-so-belle ascii-art est censé indiquer une mise en page de tableaux.

C'est-à-dire: XML + CSS -> "pixels pour l'utilisateur" au lieu de XML + XSLT -> XHTML + CSS -> "pixels pour l'utilisateur". Je souhaite que cette approche soit plus simple (pour moi) de présenter des documents XML qui sont déjà documentaires dans leur structure. Je suis aussi simplement curieux.

Répondre

6

Il est en effet possible d'utiliser CSS pour formater un document XML.

W3 schools example

(Le W3C ne vous recommandons d'utiliser xslt pour faire ce genre de chose à la place CSS bien)

+0

Merci! C'est exactement le genre d'exemple que je cherchais pour me lancer. (Maintenant pourquoi n'ai-je pas trouvé que les N derniers fois j'ai essayé de google moi-même et de répondre?) – bendin

+0

Malheureusement vous ne pourrez pas faire des choses comme convertir cette révision = "1" dans une "cellule" contenant "1" avec CSS seulement - c'est ici qu'interviennent les transformations XSL - même si c'est une courbe d'apprentissage beaucoup plus raide: D – mercutio

+0

C'est mieux que XSLT pour afficher du XML pour l'impression, il a de meilleures fonctionnalités spécifiques à l'imprimante (par exemple numérotation des pages, marges etc) et une syntaxe plus simple, bien qu'il y ait quelques générateurs XSL visuels qui rendent la création d'un XSL presque aussi facile. – PJUK

1

oui, il est possible. vous écrivez simplement une règle pour chaque élément:

author{ 
    display:block; 
    color:#888888; 
} 

etc.

2

Selon le specification, CSS devrait travailler avec des documents XML ainsi que des documents HTML. Au lieu de sélectionner des éléments HTML communs dans votre code CSS, vous sélectionnez vos propres éléments dans le fichier CSS, tels que:

entry { 
    display: block; 
} 
author { 
    display: inline; 
    font-weight: bold; 
} 
... 

Vous pouvez associer le fichier CSS à votre fichier XML en insérant une ligne similaire de code dans votre Fichier XML:

<?xml-stylesheet href="common.css" type="text/css"?>