Filtre XML basé sur la valeur de l'attribut à l'aide de xslt
J'ai cherché ici et je ne suis pas en mesure de trouver comment filtrer une base de xml sur leur attribut. J'ai ce xml:
<?xml version="1.0" encoding="utf-8"?>
<document>
<document_head>
<title>This is the title</title>
<version>This is the title</version>
</document_head>
<document_body>
<paragraph id="AXD">
<text>
This is a text that should be in the result
</text>
<properties>
<size>13px</size>
<color>#000000</color>
</properties>
<author>Current user</author>
</paragraph>
<paragraph id="SFI">
<properties>
<text>
This is some other text that should not be in there
</text>
</properties>
</paragraph>
<paragraph id="SFA">
<author>Some random guy</author>
</paragraph>
<paragraph id="ARG">
This doesn't mean anything.
</paragraph>
<paragraph id="RRR">
This does, hence should be in there.
</paragraph>
</document_body>
</document>
Je m'attends à ce résultat:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<document_head>
<title>This is the title</title>
<version>This is the title</version>
</document_head>
<document_body>
<paragraph id="AXD">
<text>
This is a text that should be in the result
</text>
<properties>
<size>13px</size>
<color>#000000</color>
</properties>
<author>Current user</author>
</paragraph>
<paragraph id="RRR">
This does, hence should be in there.
</paragraph>
</document_body>
</document>
Actuellement, j'ai cette XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="document_body/paragraph[not(@id='AXD')][not(@id='RRR')]" />
</xsl:stylesheet>
Qui produit ce XML:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<document_head>
<title>This is the title</title>
<version>This is the title</version>
</document_head>
<document_body>
<paragraph id="AXD">
<text>
This is a text that should be in the result
</text>
<properties>
<size>13px</size>
<color>#000000</color>
</properties>
<author>Current user</author>
</paragraph>
</document_body>
</document>
Savez-vous ce que je suis absent?
Grâce.
Mise à jour: Il semble que le code fonctionne pour un autre processeur XSLT, mais il n'a pas pour Java Transformateur.
Vous êtes sûr que c'est pas de travail? Je l'ai juste essayé, et il a fait produire votre sortie attendue!
Salut Tim. Oui, j'ai essayé à plusieurs reprises à l'aide de Java, et de rien. Il me donne le résultat que j'ai posté. Il semble que ce n'est pas la vérification de la deuxième condition 🙁
Salut Tim. Oui, j'ai essayé à plusieurs reprises à l'aide de Java, et de rien. Il me donne le résultat que j'ai posté. Il semble que ce n'est pas la vérification de la deuxième condition 🙁
OriginalL'auteur StrayChild01 | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
Je suis sûr que votre état de santé devrait fonctionner! Cependant, voici quelques alternatives pour vérifier, alors donnez ce un aller plutôt voir si cela fait une différence.
Je ne suis pas sûr que je comprends parfaitement, mais j'ai édité par réponse juste au cas où. Peut-être une autre question qui serait le meilleur, il n'y a pas de mal à ça!
Désolé à ce sujet. C'était à propos de l'exploitant lui-même. Et oui, les deux réponses de travail. Merci beaucoup.
OriginalL'auteur Tim C