Comment puis-je groupe sur la base de savoir s'il y a une correspondance à Sortie souhaitée: P> sortie en cours, non groupé: p> entrée: p> le La notion est que chaque "personne" aura un nom (pas de chiffres) et peut-être des données supplémentaires. Donc cherche à lire dans chaque ligne, puis groupe en fonction de l'endroit où les noms sont trouvés. P> code: p> regardant la sortie "Phone3Sue" Faites évidemment une correspondance et un regroupement, bien que cela ne soit pas exactement aussi souhaité, car "Phone3" devrait être dans son propre élément, imbriqué dans "Joe" plutôt que "Sue". Mais, toujours, il y a quelque chose de correspondance là-bas. P> de la liste de diffusion saxonne: p> Le mercredi 19 février 2020 à 10:31:37 -0800, Thufir Scripsit: P>
Je vais relire la section sur Windowing; mon impression était que c'était plus
à des fins d'affichage ou de rapport. P>
blockQuote>
Windowing est la manière dont vous prenez des morceaux d'un flux de données. P>
Qu'est-ce que vous avez, c'est effectivement un flux d'éléments de ligne; vous pouvez
Identifiez les lignes "Nom", mais vous ne le faites pas maintenant à quelle distance ils sont / comment
Beaucoup de données sont entre une paire de noms particulière. P>
Windows vous permet de dire "Je veux le morceau de ce flux qui commence par
une ligne de nom et continue jusqu'à (mais non inclus) le nom suivant
ligne ". P>
Élaboreriez-vous sur ce que vous entendez par deux étapes, un peu plus concrètement? p>
blockQuote>
Vous essayez de prendre des entrées XML et de la transformer en une sortie différente
Xml. P>
S'il s'agit de la transformation pure - Changez tous les éléments nommés foo
à l'élément nommé Baz - XQuery's n'est pas le meilleur choix d'outils. Utilisez XSLT si
vous pouvez. Ils sont calculément les mêmes mais les langues ont
différents biais et xslt se transforme plus naturellement. P>
Si la sortie XML est une représentation d'une abstraction de votre entrée
- moralement une sorte de rapport - cela aide beaucoup à avoir l'abstraction, puis à le présenter. P>
Donc, dans votre cas, ce que vous avez est un flux contenant une implicite
association entre noms et données. (C'est un flux de lignes; le seul
Voici, vous savez que ces lignes de données vont avec cette ligne de noms. Alors
implicite.) Si vous tournez cela en une cartographie explicite entre les noms
et des données - telles que la création d'une variable de carte où les clés sont la
contenu de la ligne de nom (avec des espaces manipulés en quelque sorte) et le
Les entrées pour chaque clé sont les lignes de données associées à ce nom -
Vous avez fait la partie abstraction. P>
Vous pouvez alors prendre cette carte et produire la sortie XML que vous voulez de
C'est beaucoup plus simple que d'essayer de combiner la "nouvelle xml"
et "faire les étapes d'abstraction". La dernière chose que j'ai postée a un
Exemple de transformation d'une carte en éléments, mais comme motif c'est juste p>
Carte: clés ($ carte)! {.} {$ carte (.)} p>
(il devient plus compliqué si vous avez des nœuds ou une séquence dans le
entrée, mais pas beaucoup plus.) p>
qui fait quelque chose un peu plus près du sens? P>
- Graydon P>
_______________________________________________ Liste de postage Saxon-Help archivée à http://saxon.markmail.org/
Saxon-help@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/saxon-help p>
blockQuote> p> [0-9] code> pour les chiffres avec une fenêtre de tumbling code>?
3 Réponses :
Si vous utilisez 3.0 ou 3.1, utilisez la clause "Fenêtre" de l'expression Flwor. Quelque chose comme non testé et probablement besoin de correction ou d'adaptation. P> p>
Les essais suivants pour utiliser une fenêtre code> Tumbling code> qui commence par une ligne code> code> ne contenant aucun chiffre ASCII (le nom https://xquereryfiddle.liberty-development.net/gwmups1 p> sortie Il y a p> code> du
Personne code>) suivi de toute ligne contenant au moins un chiffre ASCII (c.-à-d. Les lignes code> code>):
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<person>
<name>joe</name>
<data>phone1</data>
<data>phone2</data>
<data>phone3</data>
</person>
<person>
<name>sue</name>
<data>cell4</data>
<data>home5</data>
</person>
<person>
<name>alice</name>
<data>atrib6</data>
<data>x7</data>
<data>y9</data>
<data>z10</data>
</person>
</xml>
Lol, pardon pour changer la question, mais si une ligne est vide? semble lancer une clé. (Je travaille sur simplement enlever "vide" comme
À présent, avec trois exemples d'utilisation de la clause de la fenêtre, vous devez comprendre ou au moins une sensation de ce qu'il faut adapter, évidemment la condition correspond à ($ données, '[0-9]') code> peut ' t ne pas être vrai si vous avez maintenant vide
line code> éléments. S'ils sont censés faire partie des "données" d'une "personne", changez cette condition en
et ($ de données ($) [0-9] ') ou non ($ Data / noeud (noeud (noeud $)) ) code>. Si vous ne voulez pas les traiter du tout, bien, puis sélectionnez uniquement
pour la fenêtre de tumbling $ personne dans le texte / la ligne [nœud ()] code> pour la séquence que vous traitez avec
pour la fenêtre de tumbling code>.