Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I modelli del filtro possono contenere espressioni booleane, espressioni di confronto ed espressioni set. I collegamenti elencati nella tabella seguente rappresentano simboli alternativi forniti nell'implementazione XSL Transformations (XSLT). In questa documentazione vengono descritti gli operatori di espressione.
| Operatore | Descrizione |
|---|---|
|
AND logico |
|
OR logico |
|
Negazione |
|
Uguaglianza |
|
Non uguaglianza |
|
Minore di |
|
Minore o uguale a |
|
Maggiore di |
|
Maggiore o uguale a |
|
Operazione sugli insiemi. Restituisce l'unione di due set di nodi |
* Metodo XPath esteso
La sintassi del World Wide Web Consortium (W3C) per le parole chiave operator utilizza spazi vuoti e altri separatori anziché il simbolo del dollaro ($) utilizzato nella versione 2.5. Nella sintassi W3C una parola chiave binary del modulo $xxx$ può essere espressa come wsxxxws, dove ws si riferisce a un terminatore token rappresentato da uno spazio vuoto, da virgolette singole (') o da virgolette doppie ("). Gli operatori unari come not() utilizzano la notazione di funzione. Sebbene l'implementazione Microsoft supporti entrambe le sintassi, è consigliabile utilizzare la sintassi W3C per garantire la compatibilità futura.
L'ordine di precedenza (dal maggiore al minore) per gli operatori di confronto e booleani viene visualizzato nella seguente tabella.
| Precedenza | Operatori | Descrizione |
|---|---|---|
1 |
|
Raggruppamento |
2 |
|
Filtri |
3 |
|
Operazioni di percorso |
4 |
|
Confronti |
5 |
|
Confronti |
6 |
|
Union |
7 |
|
NOT booleano |
8 |
|
AND booleano |
9 |
|
OR booleano |
Quando gli operatori vengono utilizzati in un documento XML, come un foglio di stile XSLT, i token < e > devono essere in sequenza escape rispettivamente come < e >. Ad esempio, l'istruzione XSLT seguente richiama una regola di modello XSLT su tutti gli elementi <book> il cui elemento <price> ha un valore numerico inferiore o uguale a 10.
<xsl:apply-templates select="book[price <= 10]"/>
Quando un'espressione XPath viene utilizzata con il DOM, gli operatori < e > non devono essere in sequenza escape. Ad esempio, l'istruzione JScript seguente seleziona tutti gli elementi <book> il cui elemento <price> ha un valore numerico inferiore o uguale a 10.
var cheap_books = dom.selectNodes("book[price <= 10]");
Le espressioni booleane possono corrispondere a tutti i nodi di un determinato valore o a tutti i nodi con nodi compresi in determinati intervalli. Di seguito viene riportato un esempio di espressione booleana che restituisce false.
1 >= 2
Gli operatori distinguono tra maiuscole e minuscole.
AND logico e OR logico
Gli operatori booleani and e or eseguono rispettivamente operazioni di AND logico e di OR logico. Questi operatori, con parentesi di raggruppamento, possono essere utilizzati per costruire sofisticate espressioni logiche.
Esempi
| Espressione | Si riferisce a |
|---|---|
|
Tutti gli elementi |
|
Tutti gli elementi |
NOT booleano
L'operatore not booleano nega il valore di un'espressione all'interno di un modello del filtro.
Esempi
| Espressione | Si riferisce a |
|---|---|
|
Tutti gli elementi |
author[not(degree or award) and publication] |
Tutti gli elementi |
Esempio
File XML (test.xml)
<?xml version="1.0"?>
<test>
<x a="1">
<x a="2" b="B">
<x>
<y>y31</y>
<y>y32</y>
</x>
</x>
</x>
<x a="2">
<y>y2</y>
</x>
<x a="3">
<y>y3</y>
</x>
</test>
File XSLT (test.xsl)
Il foglio di stile XSLT seguente seleziona tutti gli elementi <x> senza alcun attributo.
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- suppress text nodes not covered in subsequent template rule -->
<xsl:template match="text()"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="*|@*"/>
<xsl:if test="text()">
<xsl:value-of select="."/>
</xsl:if>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="/test">
<xsl:apply-templates select="//x[not(@*)] "/>
</xsl:template>
</xsl:stylesheet>
Output
La trasformazione, quando viene applicata al file XML precedente, restituisce il seguente risultato:
<x>
<y>y31</y>
<y>y32</y>
</x>