xslt - добавить элементы в текст, но удалить промежуточный элемент - PullRequest
0 голосов
/ 14 сентября 2018

Я не работал с партией XSLT. Но почему-то я изо всех сил пытаюсь получить ожидаемый результат для следующих пунктов.

Ввод 1:

<name>xxxx <xsample>dddd</xsample> zzzz</name>

Выход для 1:

<p><t>xxxx dddd zzzz</t></p> // here I don't want to wrap the tag

Ввод 2

<name>xxxx <ysample>dddd</ysample> zzzz</name>

Выход для 2:

<p><t>xxxx </t><t>dddd</t><t> zzzz</t></p>

Я пробовал с приведенным ниже кодом xslt:

<xsl:template match="name">
<p>
<xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/>
</p>
</xsl:template>
<xsl:template match="name/text()[not(parent::ysample)]">
<t><xsl:value-of select="."/></t>
</xsl:template>
<xsl:template match="name/ysample">
<t><xsl:value-of select="."/></t>
</xsl:template>

Кто-нибудь, не могли бы вы помочь мне с этим?

Спасибо, Кумар

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы также можете проверить это в XSLT 2.0 с группировкой

<xsl:template match="name">
    <p>
        <xsl:for-each-group select="node()" group-adjacent="self::text() or self::xsample">
            <t>
                <xsl:value-of select="current-group()"/>
            </t>
        </xsl:for-each-group>            
    </p>
</xsl:template>
0 голосов
/ 14 сентября 2018

Я думаю, что проблема в этой строке

<xsl:template match="name//text()[not(parent::ysample)]">

Здесь есть две проблемы

  1. name/text() соответствует текстовым узлам, которые являются прямыми потомками name, итаким образом, условие not(parent::ysample), которое применяется к текстовому узлу, никогда не будет истинным, поскольку родитель всегда будет name
  2. Возможно, это опечатка, но вы, вероятно, хотите проверить здесь xsample, чтобы реализовать свою логику, особенно потому, что у вас уже есть шаблон, соответствующий ysample

Попробуйте вместо этой строки:

<xsl:template match="name//text()[not(parent::xsample)]">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...