Как разобрать вложенные теги с помощью XSLT в последовательности?(Часть II) - PullRequest
0 голосов
/ 22 мая 2018

У меня похожая проблема, например Как анализировать вложенные теги с использованием XSLT в последовательности? , но решение не соответствует

my souce:

<BodyText Status="ARC">Lorem ipsum dolor <Emphasis>THIS IS BOLD</Emphasis> amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. </BodyText>

результат:

 <p Status="ARC">Lorem ipsum dolor  <b>THIS IS BOLD</b> amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. </p>

но я просто хочу, чтобы один p ​​не p Status = "ARC", потому что состояние не соответствует моей targetSchema.

Вот мой код

        <!-- ********* BodyText ************************************************************************************************** -->
   <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <!-- ********* BodyText ************************************************************************************************** -->
    <xsl:template match="BodyText">
        <p>
         <xsl:apply-templates select="@*|node()"/>
        </p>
    </xsl:template>


<!-- ********* Emphasis ***** bold, italic, underline, Default bold **************************************************** -->
  <xsl:template match="Emphasis[@type='bold']">
        <b>
            <xsl:apply-templates select="node()"/>
        </b>
    </xsl:template>
  <xsl:template match="Emphasis[@type='italic']">
        <i>
            <xsl:apply-templates select="node()"/>
        </i>
    </xsl:template>
 <xsl:template match="Emphasis[@type='underline']">
        <u>
            <xsl:apply-templates select="node()"/>
        </u>
    </xsl:template>
  <xsl:template match="Emphasis">
        <b>
            <xsl:apply-templates select="node()"/>
        </b>
    </xsl:template> 

1 Ответ

0 голосов
/ 22 мая 2018

В шаблоне для <BodyText> также применяются значения атрибута @*.

<xsl:template match="BodyText">
    <p>
        <xsl:apply-templates select="@*|node()"/>
    </p>
</xsl:template>

Измените этот шаблон на

<xsl:template match="BodyText">
    <p>
        <xsl:apply-templates select="node()"/>
    </p>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...