xsl: apply-templates правильное размещение - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь изменить существующий XSLT, чтобы адаптировать его к своим потребностям, но хотел понять правильное применение xsl: apply-templates для обработки дополнительных тегов.

Учитывая приведенный ниже существующий код. Сначала я пытаюсь понять несколько вещей.

  1. <xsl:apply-templates/> без оператора выбора. Таким образом, из документов говорится, что этот элемент применяет шаблон к текущему элементу ИЛИ к дочерним узлам текущего элемента. Значит ли это, что для совпадений с tabelcell этот шаблон будет применяться только к самому себе (и только к дочерним элементам, если для обработки этих дочерних элементов были операторы select)?

  2. Имеет ли значение размещение в примере кода, если оно было после конечного тега </td> вместо внутреннего?

  3. Если в приведенном ниже примере кода НЕ была строка <xsl:apply-templates/>, то будет ли это означать, что при совпадениях с tabelcell ничего не произойдет?

    <xsl:template match="tablecell"> <td valign="top"> Removed content for simplicity <xsl:apply-templates/> </td> </xsl:template>

  4. Если бы были дочерние элементы <tabelcell>, такие как <par> или <pardef>, как мне нужно изменить приведенный выше код для включения такой обработки, учитывая, что он уже имеет <xsl:apply-templates/> в элементах <td>? например если бы я хотел добавить <xsl:apply-templates select="par" />

Я только новичок в XSLT и до сих пор до сих пор с легкостью помещал простые элементы xsl: apply-templates с операторами select в тегах xsl: template.

Если бы кто-то мог помочь прояснить мое понимание поведения и использования шаблонов xsl: apply-templates, ответив на мои вопросы выше, это было бы здорово.

Приветствия

1 Ответ

0 голосов
/ 30 октября 2018
  1. Так из документов говорится, что этот элемент применяет шаблон к текущий элемент ИЛИ к дочерним узлам текущего элемента.

    Я не знаю, где ты это прочитал. Это не правда. Вот что характеристики говорят:

    В отсутствие атрибута select инструкция xsl:apply-templates обрабатывает все дочерние элементы текущего узла, включая текстовые узлы.

  2. Да, это имеет значение. Таким образом, результат применения шаблонов будет размещен внутри элемента td. Если вы переместите инструкцию xsl:apply-templates за пределы элемента td, то в этом месте результат окажется в выводе.

  3. Нет. Элемент td все равно будет создан. Это было бы просто пустым (или точнее, оно все равно содержало бы то, что было в части «контент удален для простоты»).

  4. Этот вопрос не ясен. Как объяснено в # 1 выше, все дочерние элементы tablecell будут обработаны. Если вы добавите другую инструкцию к <xsl:apply-templates select="par" />, то элементы par будут обработаны дважды .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...