Что же это делает? и


Я очень новичок в XSL, и меня смущает то, что select внутри следующих частей кода будет выбирать.

<xsl:apply-templates select="."/>

<xsl:apply-templates select="*|@*"/>

Есть идеи? Спасибо

2   2   2012-11-26 04:04:22

2 ответа:

Проверьте разделсокращенного синтаксиса XPath 2.0 .

В Примере <xsl:apply-templates select="."/>, . вычисляется в элемент контекста. В большинстве случаев это то же самое, что и обрабатываемый в данный момент узел. Поэтому в этом примере будет выбран контекстный узел.

В Примере <xsl:apply-templates select="*|@*"/>, * выделит все дочерние элементы контекстного узла. @* выделит все атрибуты контекстного узла. | - оператор объединения . Так что этот пример будет выбирать все дочерние элементы контекстного узла, а также все атрибуты контекстного узла.

<xsl:apply-templates select="."/> часто используется для применения дальнейшей обработки к контекстному узлу.

<xsl:apply-templates select="*|@*"/> часто используется для обработки всех дочерних элементов текущего узла и его атрибутов. Он часто используется, когда вы закончили обработку элемента и хотите передать его дочерние элементы/атрибуты любым другим применяемым шаблонам.

<xsl:apply-templates select="."/>

Обрабатывает содержимое текущего узла! точка . указывает на содержание.. если текущий узел не имеет дочерних узлов, но имеет данные (например: <foo>Sample Data</foo>), то синтаксический анализатор обрабатывает данные Sample Data

<xsl:apply-templates select="@*|*"/>

Обрабатывает атрибут и дочерние узлы или данные под текущим узлом.. разница есть .. он заботится обо всех атрибутах контекстного узла..

Я использую слово process вместо copy, потому что .. apply-template в отличие от copy-of и value-of оценивает другое шаблоны, например, вместе с вышеуказанным кодом, если у меня есть еще один шаблон, как показано ниже:
  <xsl:template match="text()[.='Sample Data']"/> 

Затем он удалит текст из вашего выходного XML. Где as copy-of select="node_name" и value-of select="node-name" копируют данные, несмотря на то, что это шаблон в нашем файле XSL..