J'ai quelques XML qui est formaté comme suit:
<products> <product> <name>Product 1</name> <price> <orig>15</orig> <offer>10</offer> </price> </product> <product> <name>Product 2</name> <price> <orig>13</orig> <offer>12</offer> </price> </product> <product> <name>Product 3</name> <price> <orig>11</orig> </price> </product> </products>
3 Réponses :
(réponse mise à jour pour inclure les pensées sur XSLT 1.0 et 2.0) em> Notez que XSLT 1.0 n'a pas d'équivalent intégré à ii. Xslt 2.0: strong> p> Voici une solution qui utilise la fonction d'agrégation XPath 2.0 .. est appliqué sur xml fourni: strong> p> .. Le résultat recherché est produit: strong> p> min () code>; En supposant que votre parser prend en charge
EXSLT code>
, vous pouvez utiliser son math: min () code>
fonction pour obtenir une solution assez similaire à La variante XSLT 2.0 ci-dessous. p>
min () code>. P>
@Marks - J'ai mis à jour ma réponse pour fournir une solution XSLT 1.0 possible. Savez-vous: Votre analyseur XSLT implique-t-il les fonctions d'extension EXSLT (ou, en particulier, le sous-ensemble code> maths code> de ces fonctions)?
Cela fait. On dirait que cela pourrait être la solution. Je vais avoir une pièce de théâtre avant de donner des commentaires. Merci beaucoup!
Tout fonctionne bien avec Math: min (prix / *). Réponse vraiment utile - merci encore!
ii. Si Voici une solution correcte pour ce cas strong>: p> iii. Si nous savons que Les trois transformations ci-dessus, lorsqu'elles sont appliquées au document XML fourni: P> prix code> a d'autres enfants en plus de
offre code> et
orig code> strong> - dans ce cas la solution générale
offre code> ne dépasse jamais
orig code> strud>: p>
<products>
<product>
<name>Product 1</name>
<price>
<orig>15</orig>
<offer>10</offer>
<minAcceptable>8</minAcceptable>
</price>
</product>
<product>
<name>Product 2</name>
<price>
<orig>13</orig>
<offer>12</offer>
<minAcceptable>6</minAcceptable>
</price>
</product>
<product>
<name>Product 3</name>
<price>
<orig>11</orig>
<minAcceptable>7</minAcceptable>
</price>
</product>
</products>
+1 Très élégant - beau travail, @dimitrenrovatatv. Je soutiendrais toutefois que la solution II n'est pas appropriée à la question (car elle répond à une situation jamais décrite par le PO) et ne devrait donc pas être utilisée comme preuve d'inadéquation dans d'autres réponses. :)
@Abach, vous êtes les bienvenus. En ce qui concerne la pertinence, les deux solution 1. et 3. Suivre exactement le document XML de l'OP. La solution 2 nous donne la connaissance de quoi faire dans une situation légèrement différente, lorsque d'autres solutions ne fonctionnent pas. La connaissance est le pouvoir, n'est-ce pas le Thonk, alors?