2013-01-21 11 views

Odpowiedz

19

Po pierwsze, należy zachować ostrożność w swojej terminologii. Masz na myśli "węzeł" lub masz na myśli "element". Węzłem może być element, komentarz, tekst instrukcji przetwarzania.

W każdym razie, jeśli nie znaczy elementu tutaj, aby sprawdzić, co najmniej jeden element dziecko istnieje, można po prostu zrobić to (zakładając, że są umieszczone na węzła elementem w tym przypadku.

<xsl:if test="*"> 

Twój komentarz sugeruje jedynie „node1” może przejść jeśli warunek, tak aby sprawdzić istnienie określonego elementu, zrobić

<xsl:if test="node1"> 
+0

Dzięki za odpowiedź. Mam zamieszanie wśród tych terminów. Będzie bardziej ostrożny następnym razem –

3

W ramach węzła testowanej, powinno to działać, aby sprawdzić, czy dany węzeł ma dziecko elementy:

<xsl:if test="*"> 
    Only node1 can pass the if condition 
</xsl:if> 

jeśli rzeczywiście oznaczało węzły (które obejmują węzły tekstowe), to będzie działać zawierać węzły tekstowe:

<xsl:if test="node()"> 
    Only node1 can pass the if condition 
</xsl:if> 

Ale <node> również zdać ten test (<node2> Wouldn "t). Zakładam, że mówiłeś tylko w kontekście węzłów potomnych <node>, ale może nie?

0

Ekspresja pasujących do węzła są truthy, natomiast wyrażenia, które nie pasują do niczego to falsy, więc:

<xsl:if test="node()"> 
    ... 
</xsl:if> 

jednak swoje pytanie i implikowana stan „Tylko node1 może przejść jeśli warunek” są niezgodne z przykładem. Zarówno node, jak i node1 mają węzły potomne, więc obie będą przechodzić przez ten stan.

Aby ograniczyć to wyłącznie do node1, należy upewnić się, że kontekst szablonu jest odpowiedni, lub sprawdzić, czy dany węzeł nie jest dokumentem.

0

Brzmienie tej kwestii jest jasne, ale myślę, że po prostu chcesz przetwarzać węzły potomne, które mają sami dostaliśmy dzieci (czyli wnuki bieżącego węzła)

<xsl:template match="node"> 
do stuff for node 
    <xsl:apply-templates select="*[*]"/> 
</xsl:template> 

po prostu zastosować szablony node1 jak to ma węzeł podrzędny, nie będzie stosować szablonów do node2.

Powiązane problemy