Régulière fichier texte au format XML à l'aide de XSLT
J'ai un fichier texte qui ressemble à ça:
XXX^YYYY^AAAAA^XXXXXX^AAAAAA....
Les champs sont séparés à l'aide d'un accent circonflexe(^), mes présomptions sont:
le premier champ = NOM
le second déposé = nom de famille
troisième champ = Adresse
etc..
Je voudrais le transformer en un XML valide à l'aide de xsl (XSLT).
tels que:
<name>XXX</name>
<l_name>YYYY</l_name>
Je sais que Cela peut être fait facilement avec Perl, mais j'ai besoin de le faire avec XSLT, si possible.
Bonne question, +1. Voir ma réponse complète XSLT 1.0 solution et pour une description de la plus puissante de traitement de texte les capacités de XSLT 2.0 et un pointeur vers un monde réel XSLT 2.0 de traitement de texte par exemple.
OriginalL'auteur snoofkin | 2011-04-15
Vous devez vous connecter pour publier un commentaire.
Texte (non XML) les fichiers peuvent être lus avec le standard XSLT 2.0 fonction
unparsed-text()
.Alors on peut utiliser la norme XPath 2.0 fonction
marquer()
et deux autres standard XPath 2.0 fonctions qui acceptent une expression régulière comme l'un de leurs arguments --correspond à()
etreplace()
.XSLT 2.0 dispose de sa propre puissance instructions pour la poignée de traitement de texte à l'aide d'expressions régulières:: le
<xsl:analyser-string>
, le<xsl:correspondance-sous-chaîne>
et la<xsl:non-correspondance-sous-chaîne>
instruction.Voir certains des plus puissantes capacités de XSLT traitement de texte avec ces fonctions et des instructions dans ce monde réel, exemple: une transformation XSLT solution au problème WideFinder.
Enfin, voici un XSLT 1.0 solution:
Lorsque cette transformation est appliquée sur le document XML suivant:
le voulait, résultat correct est produit:
Une entité est une partie du document XML -- l'OP veut être capable de lire n'importe quel fichier donné son URL -- probablement l'URL du fichier serait passé en paramètre à la feuille de style. BTW, j'ai ajouté ma réponse avec un ensemble complet de XSLT 1.0 solution 🙂
Ce wrapper " XML
<!DOCTYPE test [<!ENTITY text SYSTEM "test.txt">]><test>&text;</test>
avectest.txt
fichierJohn^Smith^Bellevue^WA^98004
, produit le même résultat.Oui. Toutefois, cela n'a rien à voir avec XSLT-seulement avec XML. Aussi, n'oublions pas qu'en raison de problèmes de sécurité, de nombreux analyseurs XML désactiver entités par défaut.
Oui. Et je pense que c'est une mauvaise chose: les questions de sécurité concernant l'accès à des ressources externes doivent être traiter par le système. Il y a donc beaucoup de les utiliser pour la pleine prise en charge DTD... comme obtenir le document URI avec
<!ENTITY uri SYSTEM "#" NDATA uri>
etunparsed-entity-uri('uri')
OriginalL'auteur Dimitre Novatchev
La segmentation et le tri avec XSLT 1.0
Si vous utilisez xslt 2.0, c'est beaucoup plus simple:
fn:marquer(string,modèle)
OriginalL'auteur VikciaR