XML et XSLT pour écrire la sortie dans un fichier texte
Je suis en train d'utiliser l'incrément en XSLT. et écrire la sortie dans un fichier txt.
Voici mon code:
Code Xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text"/>
<xsl:result-document href="foo.txt" method=text />
<xsl:template match="/">
</xsl:template>
<xsl:template match="/build/build">
<xsl:variable name="buildNumber" select="."/>
<xsl:element name="build">
<xsl:value-of select="$buildNumber + 1"/>
</xsl:element>
</xsl:template>
<xsl:template match="/|@*|node()">
<xsl:value-of select="build/major"/>
<xsl:value-of select="build/minor"/>
<xsl:value-of select="build/build"/>
<xsl:value-of select="build/release"/>
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Code XML est:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="E:\Build\genVer.xsl"?>
<build>
<major>1.</major><minor>0.</minor><build>0</build><release>.0</release>
</build>
J'ai essayé d'utiliser <xsl:result-document>
il donne une erreur en disant <xsl:result-document>
ne peut pas être l'enfant de <xsl:stylesheet>
ou <xsl:template>
. Merci
XSLT est un langage fonctionnel, et comme un résultat variables sont "immuable" dans le sens " une fois défini, ils ne peuvent pas être modifiés. Mais pas de panique, c'est loin d'être un obstacle. Vous avez juste besoin à l'approche de votre problème d'une manière différente. Si vous pouvez modifier votre question à expliquer ce que vous essayez d'atteindre (idéalement avec un peu plus grands XML d'entrée de l'échantillon, et votre résultat attendu), alors nous devrions être en mesure de vous diriger dans la bonne direction. Merci!
Alors, quel est exactement le résultat voulu (s'il vous plaît, de modifier la question et de fournir ce) et quelles sont les règles et contraintes liées à la transformation doit mettre en œuvre (encore une fois, s'il vous plaît, de modifier la question et de fournir cette) ?
Suffit d'utiliser l'utilitaire de ligne de commande de processeur XSLT-il permet de spécifier le fichier de sortie.
je suis en train d'écrire Nant de script pour automatiser la compilation. Résultat - je veux , à chaque fois que je lance un build, le numéro de version doit augmenter. ex: si la version actuelle est 1.0.0.0 la prochaine autogenetrated version devrait être quelque chose comme ceci 1.0.1.0, 1.0.2.0...et puis les écrire dans un fichier de sortie. Je tiens également à utiliser ce numéro de version, comme mon nom du dossier de destination. où je vais copier mon .dll
Alors, quel est exactement le résultat voulu (s'il vous plaît, de modifier la question et de fournir ce) et quelles sont les règles et contraintes liées à la transformation doit mettre en œuvre (encore une fois, s'il vous plaît, de modifier la question et de fournir cette) ?
Suffit d'utiliser l'utilitaire de ligne de commande de processeur XSLT-il permet de spécifier le fichier de sortie.
je suis en train d'écrire Nant de script pour automatiser la compilation. Résultat - je veux , à chaque fois que je lance un build, le numéro de version doit augmenter. ex: si la version actuelle est 1.0.0.0 la prochaine autogenetrated version devrait être quelque chose comme ceci 1.0.1.0, 1.0.2.0...et puis les écrire dans un fichier de sortie. Je tiens également à utiliser ce numéro de version, comme mon nom du dossier de destination. où je vais copier mon .dll
OriginalL'auteur Rizwana Khan | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Votre approche avec
<xsl:result-document>
est parfaitement saine. Le seul problème, c'est que votre feuille de style XSLT est 1, et pour<xsl:result-document>
vous avez besoin XSLT 2. XSLT fonctionnelle de la langue n'a rien à voir avec ce problème.Si nécessaire, postez votre code XSLT qui utilise
<xsl:result-document>
et je vais le corriger pour vous.Edit:
Ici votre code avec les modifications nécessaires. Certaines parties de votre code d'origine comme
method="text"
de vous indiquer que vous souhaitez que le résultat d'un fichier texte, alors que<xsl:element>
semble que vous essayez de sortie d'un fichier XML, donc j'ai écrit le code pour les deux. Comme mentionné avant,<xsl:result-document>
nécessite XSLT 2.Cela crée un fichier XML:
Et cela crée un fichier texte:
Le fichier de sortie est créé dans un dossier dont le nom est la version, comme vous le souhaitiez, mais notez le dossier doit exister au préalable.
Merci pour la réponse. j'ai utilisé le code qui résultats dans le texte. mais il me donne l'erreur suivante:XslTransformException a été gérée par le code de l'utilisateur - 'result-document" n'est pas une unité d'extension de l'élément. Une erreur s'est produite lors de E:\Build\genVer.xsl(7,6). j'ai utilisé xslt=2 comme indiqué.
OriginalL'auteur Dabbler
Dans mon environnement de XSLT 2.0 n'est pas pris en charge, alors je suis venu avec la solution de contournement suivante:
Dans ce script zsh XSLT est utilisé pour produire des énoncés comme
Ces déclarations sont ensuite alimentés par zsh, résultant dans les fichiers en cours de création.
OriginalL'auteur Alex J.