L'indentation du XML avec XSL
Ce script XSL tiret mes données?
Par exemple:
<dtd name="cited">
<XMLDOC>
<cited year="2010">
<case>
No. 275 v. M.N.R.
<cite>
<yr>
2010
<pno cite="20101188">10</pno>
</yr>
</cite>
</case>
</cited>
</XMLDOC>
<XMLDOC>
<case>
Wellesley St.
<cite>
<yr>
2010
<pno cite="20105133">9</pno>
</yr>
</cite>
</case>
</XMLDOC>
</dtd>
À:
<dtd name="cited">
<XMLDOC>
<cited year="2010"></cited>
<case>
No. 275 v. M.N.R.
</case>
<cite>
</cite>
<yr>
2010
</yr>
<pno cite="20101188">10</pno>
</XMLDOC>
<XMLDOC>
<case>
Wellesley St
</case>
<cite>
</cite>
<yr>
2010
</yr>
<pno cite="20105133">9</pno>
</XMLDOC>
</dtd>
Merci!
Liées
De commentaires:
ce que je veux, c'est d'appliquer la bonne
les balises de fermeture comme<yr></yr> <pno cite="20101188">10</pno>
au lieu de
<yr> 2010 <pno cite="20101188">10</pno> </yr>
- Il y a un malentendu général ici. Vous ne pouvez pas recevoir la sortie que vous avez posté à partir de l'entrée juste à l'aide de l'indentation. Votre question et son titre ne correspondent pas.
Vous devez vous connecter pour publier un commentaire.
Utiliser une simple transformation de l'identité avec
indent="yes
spécifié sur la<xsl:output>
déclaration:Cette transformation, lorsqu'il est appliqué sur le document XML fourni par le (non défini entité
remplacé par son caractère correspondant à l'entité 
):produit, lorsqu'il est exécuté avec AltovaXML:
La même transformation, lorsqu'il est exécuté avec Saxon 6.5.4 produit:
Donc, la sortie est largement différents, en fonction de XSLT 1.0 processeur est utilisé. Saxon de l'analyse et de ne pas jeter tous les espaces seule nœud et ce, plus l'indentation produit trop d'espace blanc.
La solution de contournement est explicitement en cause le décapage de la blanc, seuls les nœuds à l'aide de:
Donc, lors de cette transformation:
est exécuté avec Saxon contre le même document XML source, la sortie est maintenant:
AltovaXML et un certain nombre d'autres processeurs XSLT 1.0 (.NET XslCompiledTransform, XslTransform) a également produit agréable en retrait de sortie de la dernière transformation.
Mise à JOUR:
Tout récemment, dans ses commentaires, l'OP a coulé nouvelle condition, ce qui rend ce problème complètement et pas seulement "indentation"...
Ici, c'est la transformation, qui produit le voulais de sortie:
Dans le monde Java Apache Xalan peut vous aider. Tous vous avez besoin est d'ajouter
indent
,xslt:indent-amount
,xmlns:xslt
arguments à laxsl:output
tag.Et vous pouvez exécuter le code XSL avec Ant: