XML XSL PHP
Par PlaceOweb le vendredi, avril 11 2008, 00:04 - PHP - Lien permanent
XML est un langage permettant l'échange de données entre applications. Couplé avec un XSL, le XSLT (T pour Transformation) vous générera un résultat formaté comme par exemple une page dont le contenu est un HTML et non plus un XML brut.
Ainsi avec un navigateur on peut afficher un HTML basé sur un XML + XSL.
Attention, certains navigateurs embarqués sur les PDA n'en sont pas encore capables, pour cela vous devrez utiliser des outils PHP ou autre qui parsent votre XML et formatent le résultat selon le XSL avant de l'afficher en HTML à destination du client.
PHP 5 inclut l'extension XSL par défaut. PHP 5 ne fournit plus qu'une et une seule manière uniforme, basée sur la libxslt, la classe XSLTProcessor.
XSLT (Extensible Stylesheet Language (XSL) Transformations) est un langage de transformation des documents XML.
Tips
Remplir en complétant une balise input ou autre
- <a href="<xsl:value-of select='file'>">
- Utiliser xsl:value-of select dans un autre balise par comment ca marche
Au final votre code html ressemblera a ceci :
<input type="hidden" name="id"><xsl:attribute name="value"><xsl:value-of select="$id" /></xsl:attribute></input>
pour le résultat :
<input type="hidden" name="id" value="123" />
Les accents
HTML ISO-8859-1 Reference
Character Entity Number Entity Name Description é é é petit e, accent aigu
HTML et entités nommées
Le processeur XSLT signale l'erreur suivante : the entity "eacute" was referenced but not declared.
En XML, seules les entités &, < et > sont connues. Ainsi, pour générer la sortie "é", on peut écrire : "&eacute;"
Une autre solution est de déclarer des entités nommées (les nombres suivant &# sont les codes ascii-étendu des caractères correspondant)
<!DOCTYPE xsl:stylesheet [ <!ENTITY eacute "é"> <!ENTITY egrave "è"> ... ]>
Concernant les "php don't replace ENTITY DOCTYPE xsl:stylesheet"
- zweibieren sur php.net explique comment prendre en compte les entities
$xsl = new DOMDocument; $xsl->substituteEntities = true; // ligne ajoutée pour la prise en charge des ENTITY du DOCTYPE xsl:stylesheet. $xsl->load('collection.xsl');
Et la classe DOMDocument pour les options telles que :
// $doc->resolveExternals : Définissez-le à TRUE pour charger des entités externes depuis la déclaration doctype. C'est utile pour inclure des entités dans vos documents XML. $doc->substituteEntities = true; // Propriétaire. Si l'on doit ou non substituer les entités. Cet attribut ne fait pas parti de la spécification DOM et est spécifique à libxml. Par exemple : <!ENTITY eacute "é"> é $doc->preserveWhiteSpace = false; // A false marque les tabulations : Ne pas supprimer les espaces redondants. Vaut par défaut TRUE. $doc->formatOutput = true; // A true marque les tabulations : Formate la sortie avec une jolie indentation et des espaces supplémentaires
Alternativement pour l'inclusion des dépendances externes (des autre fichiers inclus : <xsl:include href="fichier2.xsl"/>) voyez :
libxml_disable_entity_loader(false); // libxml_disable_entity_loader(true); // Warning: DOMDocument::load(): I/O warning : failed to load external entity "D:\xsl/fichier2.xsl"
Ressources
- Transformations XML avec XSLT et PHP
- Transformations XSLT en PHP 5
- Application d' une feuille de style XSLT à un document XML
- Introduction technique à XSLT
- XML/XSL avec PHP et le mode XSLT
- XML - Mise en page avec les feuilles de style XSL
- XSLT (XSL Transformations), XSL, XSLT, XSL-FO, XPath : le point + XPath (XML Path Language) pour adresser des parties de documents XML, conçu pour être utilisé à la fois par XLST et XPointer
- XSL : remplacer une chaîne de caractères
- Transformations de XML avec XSLT
- Le langage XPATH : Le langage de requête XPATH
- Le langage XSL : XSLT (eXtensible Stylesheet Language Transformation)
- XSLT Tutorial