Sto usando l'istruzione di elaborazione xsl:stylesheet
nel mio XML. Esiste comunque la possibilità di selezionare questo PI usando XPath? Se é cosi, come ?Qual è l'espressione XPath per selezionare un'istruzione di elaborazione?
risposta
Utilizzare il test del nodo processing-instruction()
.
In generale, è possibile selezionare un'istruzione di elaborazione utilizzando il test del nodo processing-instruction()
.
In particolare, è possibile includere come argomento il nome (destinazione) del nodo PI ricercato.
Uso:
/processing-instruction('xml-stylesheet')
Questo seleziona qualsiasi istruzione di elaborazione con il nome xsl-stylesheet
definito a livello globale (è pari livello dell'elemento superiore).
Si noti che xsl:stylesheet
è un target PI non valido per un PI. Un colon ':'
viene utilizzato per delimitare un prefisso dello spazio dei nomi dal nome locale, tuttavia un'istruzione di elaborazione target non può appartenere a uno spazio dei nomi. Come per la W3c XPath Specification:
"Un'istruzione di elaborazione ha un nome espanso: la parte locale è l'obiettivo della istruzione di elaborazione, il namespace URI è nullo."
Sempre secondo il documento W3C: "Associating Style Sheets with XML documents 1.0", l'obiettivo della PI che associa un foglio di stile a un documento XML deve essere:. "xml-stylesheet"
- non "xsl:stylesheet"
o "xsl-stylesheet"
Ecco un esempio completo:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/processing-instruction('xml-stylesheet')"/>
</xsl:template>
</xsl:stylesheet>
Quando questa trasformazione viene applicata contro il seguente documento XML:
<?xml-stylesheet type="text/xsl" href="test"?>
<Books>
<Book name="MyBook" />
</Books>
l'espressione XPath viene valutata e il nodo PI selezionato viene emesso:
<?xml-stylesheet type="text/xsl" href="test"?>
Vedo che sei ancora all'altezza dei tuoi vecchi trucchi ... Eliminare e ripubblicare una risposta per scartare i voti è un abuso diretto: come la gente decide di valutare le tue risposte è la loro decisione, non la tua. Per favore, evita di farlo di nuovo. – Shog9
'/ processing-instruction ('xml-stylesheet')' seleziona le cose con il nome 'xsl-stylesheet'? Sarebbe magico! Nota 'xml' vs' xsl'. –
@MicheldeRuiter, Sì, lo fa. Questo è formalmente definito qui (il terzo paragrafo dal basso): http://www.w3.org/TR/xpath/#node-tests –
Un cappello istruzione di elaborazione due parti bersaglio e dati con la sintassi:
<?target data?>
Se si utilizza:
<xsl:value-of select="/processing-instruction('xml-stylesheet')" />
verrà restituito solo la parte dei dati, nell'esempio di Dimitre Novatchev, restituisce:
type="text/xsl" href="test"
Quindi il valore di stringa di un'istruzione di elaborazione è la parte dei dati. selezionare l'espressione di <xsl:value-of
viene valutata e l'oggetto risultante viene convertito in una stringa, come una chiamata implicita alla funzione string()
.
- 1. XPath per selezionare più tag
- 2. Selezionare primo risultato in XPath
- 3. XPath selezionare nodo con namespace
- 4. Che cos'è xpath per selezionare un intervallo di nodi?
- 5. Come utilizzare XPath per selezionare più valori di testo possibili?
- 6. Qual è l'espressione XPath per trovare solo la prima occorrenza?
- 7. XPath per selezionare 1 elemento se uno dei due esiste
- 8. XPath per selezionare tutti gli elementi con un nome specificato
- 9. Come selezionare l'ennesimo elemento in xpath 1.0?
- 10. XPath per selezionare i nodi esclusi dalla lista valore dell'attributo
- 11. usando xpath per selezionare un elemento dopo l'altro
- 12. espressione XPath per selezionare il testo da collegamento
- 13. Come confrontare le date in xpath per selezionare i nodi
- 14. XPath per selezionare Elemento in base al valore dell'attributo
- 15. XPath: selezionare i primi 5 elementi
- 16. Qual è l'uso corretto di XmlNode.SelectSingleNode (stringa xpath) in C#?
- 17. Espressione XPath per selezionare * tutti * elementi, nodi di testo e nodi commenti nell'ordine di origine
- 18. Selezione nodo Xpath - come selezionare 2 elementi diversi - htmlagilitypack
- 19. Come selezionare il primo nome figlio di un nodo? XPath
- 20. Qual è la differenza tra .// e // * in XPath?
- 21. Selezione XPath per testo interno
- 22. utilizzando XPath come selezionare gli elementi con attributo assente
- 23. selezionare più righe da colonna del database XML utilizzando XPath
- 24. Selezionare nodo senza spazio dei nomi con XPath
- 25. XPath - selezionare il testo dopo un certo nodo
- 26. Elaborazione di file xml di grandi dimensioni
- 27. selenio xpath, come selezionare l'ultimo elemento corrispondente in una tabella?
- 28. Qual è l'equivalente di cast per concetti?
- 29. Come selezionare tutti i nodi foglia utilizzando l'espressione XPath?
- 30. XPath selezionare tutti gli elementi tra due elementi specifici
Kirill, questa risposta è troppo generica - non si sta fornendo un'espressione XPath specifica che seleziona esattamente il PI ricercato. –