Comment obtenir de la casse éléments XML
Pour autant que je sais de l'élément XML de noms de types ainsi que des noms d'attributs
sont sensibles à la casse.
Est-il un moyen ou toute astuce pour obtenir casse éléments?
Clarification:
Une grammaire est définie via XSD qui est utilisé pour certains clients de télécharger
les données. Les utilisateurs -les générateurs de contenu - création de fichiers XML à l'aide de différents
les outils, mais beaucoup d'entre eux sont à l'aide de la plaine des éditeurs de texte ou quoi que ce soit. Parfois, quand ce peuple essayez de télécharger leurs fichiers qu'ils obtiennent l'incompatibilité des erreurs.
C'est une erreur commune qu'ils mélangent les minuscules et les majuscules des balises bien qu'il est
a toujours été clair que les tags SONT sensibles à la casse.
J'ai accès au fichier XSD, qui définit la grammaire et je peux le changer.
La question est de savoir comment éviter ce risque d'erreur de majuscule/minuscule tags problème.
Une idée?
Merci d'avance!
Est la conversion de la saisie en minuscules, pas une option?
Non, il n'est pas. Les utilisateurs disposent d'une interface graphique à partir d'où ils envoient leurs fichiers directement.
Analyser le fichier d'entrée et l'enregistrer dans un répertoire?
OriginalL'auteur Luixv | 2009-05-15
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre problème correctement le cas où des erreurs ne peuvent être corrigées qu'entre la création et la mise en ligne par un 3ème partie outil d'analyse.
c'est à dire Fichier XML > Analysée dans XSD et corrigée > Télécharger approuvé
Vous pouvez le faire au moment de l'exécution par le développement d'une application conteneur pour vos clients de créer leurs fichiers XML. Sinon, vous pouvez écrire une application sur le côté serveur qui prend le fichier téléchargé et vérifie la syntaxe. De toute façon vous allez avoir à prendre une décision et ensuite faire un peu de travail!!
Beaucoup dépend de l'ampleur du problème. Si vous avez des tags similaires dans les différents cas dans votre XSD par exemple et mais que vous recevez ensuite, vous aurez besoin d'un compliqué solution basée sur le nœud de comptage etc.
Si vous êtes purement coincé avec des clients à l'aide de random cas à l'encontre d'un XSD seulement contenant de minuscules étiquettes, alors vous devriez être en mesure d'analyser les fichiers et la conversion de toutes les balises en minuscules. C'est en supposant que le contenu entre les balises est multi-cas et que vous ne pouvez pas convertir le document complet.
Comment vous faites cela dépend de la mécanique de votre situation. Évidemment, il sera plus facile d'obtenir des clients à l'erreur de vérifier leurs propres observations. Si ce n'est pas pratique, alors vous aurez besoin d'identifier une fenêtre d'opportunité dans le processus, ce qui vous permettra de convertir le fichier au bon format avant de les erreurs sont rencontrées.
Il y a beaucoup trop de façons d'aller à ce sujet afin de discuter ici. Elle dépend principalement de la compétence de jeux ou de financement disponibles pour vous.
De toute façon, merci pour le commentaire. Semble être, qu'à XSD niveau il n'existe aucun moyen. +1
Réponse très, très bien ce que j'aurais dit! +1
Votre problème est que vous voulez utiliser le XSD pour forcer un document non reliées à suivre le schéma exactement. Vous ne pouvez pas le faire sans une certaine forme de validation et ce sera soit la fourniture d'un outil pour le client ou la validation et la correction de la soumission client. Le XSD lui-même est purement une description de la structure de données et de contenu dans le fichier XML. L'idée derrière cela est qu'il vous permet de mapper les différents ensembles de données à un seul document XML (pour le transfert de document). Il n'a pas d'effectuer toutes les actions sur le document lui-même.
OriginalL'auteur melkisadek
XPath/Xslt processeurs sont sensibles à la casse. Ils ne peuvent pas sélectionner un nœud ou d'un attribut si vous spécifiez le mauvais cas.
Dans le cas où vous souhaitez afficher le nom du nœud et il veut être en majuscules, vous pouvez le faire:
OriginalL'auteur Rashmi Pandit
@Melkisadek dit, la validation XSD existe pour un but. Si vous autorisez les utilisateurs à télécharger les fichiers en XML non valide, votre demande est vouée à l'échec à un certain point, lorsque les données de ces fichiers est accessible. De plus, tout le but d'avoir un XSD valider la saisie de schéma XML est vaincu. Si vous êtes prêt à renoncer à l'ensemble de la validation de schéma fonctionnalité, vous devez utiliser une transformation XSLT pour convertir toutes les balises en Majuscules ou en Minuscules que vous le désirez (voir @Rashmi de réponse).
Il serait analogue à permettre à un utilisateur d'entrer des caractères spéciaux dans un Numéro de Sécurité Sociale du champ d'entrée, juste parce que l'utilisateur est plus à l'aise pour taper des caractères spéciaux (Oui, cet exemple est stupide, ne pouvait pas penser à un meilleur!)
Donc, dans mon esprit, la solution réside dans le maintien de la validation de schéma, mais de fournir aux utilisateurs un moyen de valider le schéma avant de le télécharger. Par exemple, si c'est la Web app, vous pouvez fournir un bouton sur la page qui utilise Javascript pour valider le fichier à l'encontre de votre schéma. Sinon, valider sur le serveur uniquement lorsque le fichier est téléchargé. Dans les deux cas, fournir les informations appropriées telles que le numéro de la ligne sur laquelle l'errant entités du mensonge, de la position de caractère, et la raison pour signaler une erreur.
OriginalL'auteur Cerebrus
En théorie, vous pourriez essayer de pirater le Schéma XML pour valider de manière incorrecte capitalisés les noms d'éléments.
Cela peut être fait en utilisant la groupe de substitution mécanisme dans le Schéma XML. Par exemple, si votre schéma avait défini:
ensuite, vous pouvez ajouter ce qui suit au Schéma XML:
etc.
pour essayer d'anticiper les éventuelles erreurs qu'ils pourraient faire. Pour chaque élément, il pourrait y avoir 2^n combinaison possible de cas, où n est la longueur du nom (en supposant que chaque personnage de ce nom est une lettre).
Dans la pratique, c'est trop de problèmes, ne fait que retarder le problème plutôt que de le résoudre, et probablement ne fonctionne pas. Si les utilisateurs ne se rendent pas compte que XML est sensible à la casse, alors qu'ils n'auraient pas de fin des balises qui correspondent le cas de la balise de début et il échouera toujours à valider.
Que d'autres personnes l'ont dit, soit pré-traiter les soumis d'entrée à la résolution du problème ou pour obtenir des utilisateurs pour produire de l'entrée correcte avant de la soumettre.
OriginalL'auteur Hoylen
XML est normalement générée par machine. Par conséquent, vous ne devriez avoir aucun réel problème ici, largeur
<RANdOm />
cas.Si le vrai problème est que deux systèmes différents sont génératrices de deux types différents de la balise (
<Widget />
vs<widget />
), je pense que l'on peut définir simplement les deux cas, dans votre XSD.OriginalL'auteur Zack Marrapese
Après le téléchargement, la marche du fichier XML (via DOM ou SAX) et fixer le boîtier avant de valider?
OriginalL'auteur JBRWilkinson
Les simples solution est de l'envoyer en minuscules, toutes les balises/attributs lorsque vous chargez des données xml à partir d'utilisateur et ensuite seulement de vérifier l'xsd conçu pour toutes les minuscules étiquettes/attributs
OriginalL'auteur Volchik