version texteXSLT analyser une partie de division de chaîne de mixedContent nouvel élément dans
XML Source
contient un élément nommé mixedContent-paragraph
. La plupart du temps, le contenu commence par un chiffre entre parenthèses, par ex. (1)
. Le numéro est toujours le premier (partie d'un) noeud de texte.
XML Target
gère ce numéro spécifique dans un élément distinct nommé counter
.
Comment traiter paragraph
d'une manière efficace?
masques numéro de l'exemple
(1)
(0...9)
[0...9]
{:digits:}
source Exemple de paragraphe
<paragraphs>
<paragraph>(1) text <try>1</try> <italic>italic</italic> stuff</paragraph>
<paragraph>[2] text <try>2</try> <italic>italic</italic> stuff</paragraph>
<paragraph>{123} text <try>3</try> <italic>italic</italic> stuff</paragraph>
<paragraph>text <try>4</try> <italic>italic</italic> stuff</paragraph>
</paragraphs>
Exemple paragraphe cible
<paragraphs>
<frame>
<counter>(1)</counter>
<paragraph>text <try>1</try> <italic>italic</italic> stuff</paragraph>
</frame>
<frame>
<counter>[2]</counter>
<paragraph>text <try>2</try> <italic>italic</italic> stuff</paragraph>
</frame>
<frame>
<counter>{123}</counter>
<paragraph>text <try>3</try> <italic>italic</italic> stuff</paragraph>
</frame>
<frame>
<paragraph>text <try>4</try> <italic>italic</italic> stuff</paragraph>
</frame>
</paragraphs>
pas (fonctionnelle) partie
<xsl:template match="paragraph">
<frame>
<xsl:analyze-string select="." regex="(^[^\s]+)"><!-- TODO: select digits instead of the first whitespace! -->
<xsl:matching-substring>
<xsl:element name="counter">
<xsl:value-of select="regex-group(1)" />
</xsl:element>
</xsl:matching-substring>
</xsl:analyze-string>
<paragraph>
<xsl:apply-templates/><!-- TODO: everything but not the part of regex-group(1) + whitespace-character -->
</paragraph>
</frame>
</xsl:template>
Je cessé de travailler sur ce modèle peut-être parce qu'il ya une meilleure solution pour résoudre ce problème.
Toute aide est appréciée.
Alors quand avez-vous besoin d'extraire ce compteur, si le premier noeud enfant de l'élément 'paragraph' est un noeud de texte qui commence par l'un des quatre modèles? Ou peut-il y avoir aussi un compteur dans un élément enfant comme ' (1) ... ' qui doit être extrait? –
le numéro est toujours en texte brut et doit être le premier (partie d'un) nœud de texte. – uL1