2017-11-12 5 views
0

Ich habe hier, um diesen Teil des XSLT mit den if:Wie könnte ich diese XSLT nicht (contains()) arbeiten lassen?

<xsl:template match="receta"> 
<xsl:if test="./ingredientes/ingrediente[not(contains(., 'Leche'))] and 
       ./ingredientes/ingrediente[not(contains(., 'Queso'))] "> 
    <article> 
     <header> 
      <h2> 
       <xsl:apply-templates select="nombre"/> 

und dem entsprechenden Teil des XML:

<receta n="R2"> 
    <nombre> 
     Croquetas de bacalao 
    </nombre> 
    <tipo> 
     Primer plato 
    </tipo> 
    <ingredientes> 
     <ingrediente cantidad= "1" unidad="en lomos"> 
      Bacalao 
     </ingrediente> 
     <ingrediente cantidad= "850" unidad= "ml."> 
      Leche entera 
     </ingrediente> 

Ohne die not() es funktioniert, aber es ist offensichtlich nicht das, was ich brauche. Welches ist die korrekte Art der Verwendung von in diesem Fall?

+0

Sie müssen erklären, welches Ergebnis Sie suchen. Was ist die Bedingung, die Sie überprüfen möchten, welche 'receta's möchten Sie in Ihrer Vorlage zuordnen? –

+0

Ich möchte die Rezepte ohne den Teilstring des If als Zutat bekommen – davillafer

Antwort

0

eine Variable ingredientes wie unten hinzufügen:

<xsl:template match="receta"> 
    <xsl:variable name="ingredientes"> 
     <xsl:value-of select="./ingredientes/ingrediente"/> 
    </xsl:variable> 
    <xsl:if test="not(contains($ingredientes, 'Leche')) and not(contains($ingredientes, 'Queso')) "> 
    <article> 
     <header> 
      <h2> 
       <xsl:apply-templates select="nombre"/> 
1

Wenn Ihre Absicht, wenn ein einzelnes ingrediente beide Zeichenketten enthalten nicht zu testen, dann

<xsl:if test="./ingredientes/ingrediente[not(contains(., 'Leche'))] and 
       ./ingredientes/ingrediente[not(contains(., 'Queso'))]"> 

zu

<xsl:if test="ingredientes/ingrediente[not(contains(., 'Leche')) and 
             not(contains(., 'Queso'))]"> 
ändern

ansonsten zwei separate ingrediente können getrennt werden Sie enthalten nicht jeden Teilstring.

0

Vielleicht möchten Sie testen, ob keiner der Inhaltsstoffe Lecho oder Quese enthält. Das wäre

test="not(./ingredientes/ingrediente[contains(., 'Leche'))] and 
     not(./ingredientes/ingrediente[contains(., 'Queso'))]" 

Ihr Code testet, dass es mindestens ein Bestandteil ist, der nicht Leche enthält und zumindest eine, die Queso nicht enthalten, was ich nicht glaube, wird die Menschen zu befriedigen allergisch zu Milchprodukten.

Verwandte Themen