J'écris une application pour visualiser le contenu de quelques bases de données. Cette application devrait être aussi facile que possible à installer et à utiliser, j'ai donc décidé d'utiliser des fichiers XML comme bases de données et de les transformer adéquatement avec XSL via un navigateur. À l'heure actuelle, les fichiers XSL sont programmés pour créer un tableau récapitulatif de chaque base de données et en cliquant sur la première cellule de chaque ligne, une description plus complète de l'ensemble de l'entrée apparaît. Cela signifie que la page contient chaque description complète de chaque enregistrement dans la base de données, mais cette situation ralentit le chargement de la page, ce qui nécessite jusqu'à 5 secondes pour charger quelques centaines d'enregistrements. Étant donné que je prévois d'élargir les bases de données à l'avenir, ce problème est appelé à s'aggraver. Pour réduire la charge, la prochaine étape évidente est de recourir à une sorte de chargement différé, soit en utilisant AJAX ou un iframe (pas vraiment important celui en ce moment et pas le point de la question), mais je rencontre quelques difficultés. Mon idée était d'appeler directement un fichier XML comme ceci:Extraire les paramètres d'URL à partir de XML/XSL
file:///path/to/file/transform.xml?id=23
Avec transform.xml être:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
<content />
Et transform.xsl être:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:output method="html" version="5" doctype-system="about:legacy-compat" indent="yes" />
<xsl:param name="url" />
<xsl:template match="/">
<html>
<body><xsl:value-of select="$url" /></body>
</html>
</xsl:template>
</xsl:stylesheet>
c'est juste En ce moment une preuve de concept, mais cette partie est la pierre angulaire de tout ce qui suit et si cela ne fonctionne pas, alors il est inutile d'aller plus loin de cette façon.
Tout ce que je peux voir en ce moment est une page blanche. J'ai également essayé de changer le nom du paramètre à id
, mais la page reste vide. Je sais que cela peut être réalisé facilement avec PHP ou d'autres solutions côté serveur et MySQL serait plus efficace, mais j'ai vraiment besoin de cette application pour être utilisable au moment même du téléchargement. Si mes utilisateurs doivent installer un serveur * AMP, ils ne le feront probablement pas. Un serveur public n'est pas non plus une solution, car j'ai besoin que cette application soit exécutée hors ligne. Une solution JavaScript/jQuery d'un autre côté est parfaitement acceptable, car elle est côté client.
Modifier: La plupart de mon travail est basé sur this question, qui semble fonctionner mais est assez ancien et l'exemple contient l'URL d'une page ASP.
Le problème que je vois avec Saxon-JS est qu'il nécessite une sorte de compilation de fichiers XSL, ce qui signifie que le code sera probablement fermé. – GRB
Oui, la dépendance aux outils commerciaux est un facteur dont vous devez tenir compte. Vous devez décider si vous préférez utiliser des outils commerciaux développés activement en 2017 ou des outils gratuits qui n'ont pas évolué depuis 2001. –