web-dev-qa-db-fra.com

Comment lier un fichier XML à un fichier XSLT?

Les exemples de

http://en.wikipedia.org/wiki/XSLT

ou

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

semblent être des fichiers XML et XSLT indépendants. Ne doivent-ils pas être liés? Ou les mettez-vous en quelque sorte dans un même fichier? Sinon, comment un fichier sait-il comment aspirer les données de l'autre fichier?

40

Vous pouvez l'ajouter après la déclaration xml

<?xml-stylesheet type="text/xsl" href="yourxsl.xsl"?>
64
user414661

Un fichier ne sait pas "aspirer les données" de l'autre fichier, car ce ne sont pas les fichiers qui feront le traitement.

Une sorte de processeur XSLT fera cela, et la façon dont on lui dira sur quoi travailler varie afin qu'il puisse gérer différents cas d'utilisation.

Dans le cas du rendu de la transformation complète d'un document XML lorsqu'il est affiché dans un navigateur, alors instruction de traitement:

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

(Vraiment, il aurait dû être "text/xml" pour le type car c'est le type mime d'un document XSL, mais c'était à la fin des guerres du navigateur et l'implémentation des fonctionnalités du navigateur se produisait encore souvent plus vite que la vitesse de bon sens).

Si vous contrôlez la transformation par programme à l'aide d'une bibliothèque quelconque (il existe des objets pour le javascript côté client et des bibliothèques dans n'importe quelle langue à partir de laquelle vous voudrez probablement le faire), alors vous avez suffisamment de contrôle pour détailler ce qui est transformé par quoi. Voici quelques cas intéressants.

  1. Vous pouvez même avoir un document avec un nœud de contenu et un nœud de transformations, les sélectionner et exécuter la transformation.

  2. Si vous exécutez la même transformation sur plusieurs documents XML, il est très souvent plus efficace d'appeler une sorte de méthode "PreCompile ()" ou similaire, qui prend un coup sur cet appel pour bénéficier de toutes les transformations suivantes.

  3. Vous pouvez transmettre des valeurs aux paramètres de niveau supérieur dans le XSLT.

4
Jon Hanna

Vous pouvez également effectuer la transformation dans une page html:

<script type="text/javascript">
  var xml = new ActiveXObject("Microsoft.XMLDOM")
  xml.async = false
  xml.load("some_xml.xml")
  var xsl = new ActiveXObject("Microsoft.XMLDOM")
  xsl.async = false
  xsl.load("some_xsl.xsl")
  document.write(xml.transformNode(xsl))
</script>
3
Ido Weinstein

Vous avez besoin d'un outil ou d'une bibliothèque externe pour appliquer une transformation Xslt à Xml. La façon dont vous procédez dépend de votre environnement de programmation, mais pour .Net, XslCompiledTransform est la classe utilisée pour appliquer une transformation Xslt à un morceau de Xml (soit un fichier, soit du Xml en mémoire).

Alternativement, vous pouvez utiliser l'outil de ligne de commande Microsoft xslt.exe - vous devrez rechercher par vous-même comment faire la même chose dans d'autres langages de programmation/systèmes d'exploitation.

1
Justin