2009-11-21 3 views
0

La chaîne suivante est codée dans mon code source XML à l'aide de bascules, et je souhaite qu'elle soit modifiée en nœuds avec des informations de formatage. (Ceci est XLIFF à WordprocessingML.)XSL: éléments de suivi qui basculent

"Texte, texte en gras, texte gras et italique, texte en gras, texte brut."

XML Source:

<text> 
Text 
<format id="1" type="bold" /> 
bold text, 
<format id="2" type="italics" /> 
bold and italics text, 
<endformat id="2" /> 
bold text, 
<endformat id="1" /> 
plain text. 
</text> 

J'ai besoin:

<run> 
    <format></format> 
    <text>Text, </text> 
</run> 
<run> 
    <format><b/></format> 
    <text>bold text, </run> 
</run> 
<run> 
    <format><b/><i/></format> 
    <text>bold and italics text, </run> 
</run> 
<run> 
    <format><b/></format> 
    <text>bold text, </run> 
</run> 
<run> 
    <format></format> 
    <text>plain text.</run> 
</run> 

Si j'utilisais un langage procédural, je garde un dossier en cours d'exécution de ce que la mise en forme est actif et écrire l'élément <format> en conséquence.

Mais comment le faire en XSL?

Répondre

1

Depuis les nœuds enfants de text sont du texte alternatif() suivi par format avec symétrique endformat et text() Je pense que vous pouvez passer une liste des noeuds à xsl: call-template récursive, le traitement de deux nœuds de départ et 2 noeuds d'extrémité et raccourcissement de la liste par les 2 nœuds principaux et traçage de 2 nœuds à chaque fois. Mais je ne suis pas clair sur la syntaxe de votre fichier, donc cela peut ne pas être possible.

Questions connexes