XSL xsl: template match = “/”

Eu estou apenas aprendendo XML e como usar arquivos XSL. Em um arquivo XSL, encontrei o seguinte termo:

xsl:template match="/" 

O que isso significa? E o que eu poderia usar em vez do / ? Eu poderia escrever table ou qualquer outra tag HTML em vez de / ?

O valor do atributo de match da instrução deve ser um padrão de correspondência .

Os padrões de correspondência formam um subconjunto do conjunto de todas as expressões XPath possíveis . A primeira limitação natural é que um padrão de correspondência deve selecionar um conjunto de nós. Existem também outras limitações. Em particular, os eixos reversos não são permitidos nas etapas de localização (mas podem ser especificados dentro dos predicados). Além disso, nenhuma referência de parâmetro ou variável é permitida no XSLT 1.0, mas usá-las é legal no XSLT 2.x.

/ no XPath denota a raiz ou o nó do documento. No XPath 2.0 (e, portanto, XSLT 2.x) isso também pode ser escrito como document-node() .

Um padrão de correspondência pode conter a // abreviação .

Exemplos de padrões de correspondência:

  

pode ser aplicado em qualquer elemento chamado table .

  

pode ser aplicado em qualquer elemento chamado y cujo pai seja um elemento chamado x .

  

pode ser aplicado a qualquer elemento.

  

pode ser aplicado apenas ao elemento principal de um documento XML.

  

pode ser aplicado a qualquer atributo.

  

pode ser aplicado a qualquer nó de texto.

  

pode ser aplicado a qualquer nó de comentário.

  

pode ser aplicado a qualquer nó de instrução de processamento.

  

pode ser aplicado a qualquer nó: elemento, texto, comentário ou instructon de processamento.

Vale a pena notar, já que é confuso para pessoas novas em XML, que a raiz (ou o nó do documento) de um documento XML não é o elemento de nível superior. É o pai do elemento de nível superior. Isso é confuso porque não parece que o elemento de nível superior possa ter um pai. Não é o nível superior?

Mas olhe para isto, um documento XML bem formado:

    

A raiz deste documento tem três filhos: uma instrução de processamento, um comentário e um elemento.

Então, por exemplo, se você quisesse escrever uma transformação que se livrasse desse comentário, mas deixasse em qualquer comentário aparecendo em qualquer outro lugar no documento, você adicionaria isso à transformação de identidade:

  

Ainda mais simples (e mais comumente útil), aqui está um padrão XPath que corresponde ao elemento de nível superior do documento, independentemente de seu nome: /* .

O atributo match indica em quais partes a transformação do modelo será aplicada. Nesse caso em particular, o “/” significa a raiz do documento xml. O valor que você deve fornecer ao atributo de correspondência deve ser expressão XPath. XPath é o idioma que você deve usar para referenciar partes específicas do arquivo xml de destino.

Para obter uma compreensão significativa do que mais você pode colocar no atributo de correspondência, você precisa entender o que é xpath e como usá-lo. Eu sugiro que você olhe os links que forneci para você na parte inferior da resposta.

Eu poderia escrever “table” ou qualquer outra tag html em vez de “/”?

Sim você pode. Mas isso depende exatamente do que você está tentando fazer. se seu arquivo xml de destino contiver elementos HMTL e você estiver tentando aplicar este xsl: template neles, faz sentido usar table, div ou aithing else.

Aqui alguns links:

  • Modelos XSL
  • XPath
  • Um bom livro sobre XML – XML inicial