Question

Je suis en train d'utiliser la sortie de texte XSLT pour générer un fichier (dans un format de fichier que je ne suis pas dans le contrôle de), et alors qu'il est principalement du texte, il comprend peu d'ordre des caractères non-imprimables comme des drapeaux, y compris les caractères qui ne sont pas valides dans un fichier XLST (selon la spécification XSLT).

Je voudrais que quelque chose comme ci-dessous pour travailler, mais ce n'est pas un fichier XSLT valide car il contient des caractères qui ne sont pas autorisés dans les fichiers XSLT:

<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text" encoding="US-ASCII"/>
  <xsl:template match="/">&#1;</xsl:template>
</xsl:stylesheet>

Je reçois l'erreur suivante:

[Fatal Error] :4:35: Character reference "&#1" is an invalid XML character.
ERROR:  'Character reference "&#1" is an invalid XML character.'
FATAL ERROR:  'Could not compile stylesheet'

Je l'ai essayé avec un caractère réel 1 aussi, avec ou sans une section CDATA, xsl: éléments de texte, des cartes de caractère xslt-2, deux codages différents, mais je ne peux pas comprendre comment obtenir un ascii caractère de code binaire = 1.

J'ai dû recourir à la post-traitement de ma sortie, ce qui est idéal.

Y at-il moyen de générer un faible ordre de sortie de caractères non-imprimables à partir XSLT?

Environnement: Java 6, construit en XSL Transformer

.
Était-ce utile?

La solution

Vous pouvez appeler des méthodes statiques des classes Java à partir XSLT. Utilisez le hack par exemple pour écrire 0x01 à votre flux de sortie:

<?xml version="1.0" encoding="US-ASCII" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:char="java.lang.Character" version="1.0">
    <xsl:output method="text" encoding="US-ASCII" />
    <xsl:template match="/">
        <xsl:value-of select="char:toString(1)"></xsl:value-of>
    </xsl:template>
</xsl:stylesheet>

Autres conseils

Une autre option que je suis venu avec, est d'utiliser un xsl:. Param qui l'environnement appelant met à caractère 0x01

Cela signifie qu'au lieu de travailler toujours dans un environnement java, et nécessitant des changements partout ailleurs, que la feuille de style nécessite un soutien environnemental dans tous les environnements, mais peut fonctionner sans changement dans tous.

Je ne suis pas encore sûr de quel côté de ce compromis est préférable pour ce que je travaille.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top