Как частично преобразовать в XSLT - PullRequest
0 голосов
/ 13 октября 2018

Я сделал XSLT-преобразование в XML и теперь хотел бы применить XSLT для изменения некоторого содержимого.

Как обернуть все элементы tr в table элемент?Я использую XSLT 1.0 в C #.

XML

<?xml version="1.0" ?>
<div class="group">
  <div class="group-header">A</div>
  <div class="group-body">
    <div class="group">
      <div class="group-header">B</div>
      <div class="group-body">
        <div class="group">
          <div class="group-header">C</div>
          <div class="group-body">
            <tr>C1</tr>
            <tr>C2</tr>
            <tr>C3</tr>
          </div>
        </div>
        <div class="group">
          <div class="group-header">D</div>
          <div class="group-body">
            <tr>D1</tr>
            <tr>D2</tr>
            <tr>D3</tr>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Ожидаемый результат:

enter image description here

1 Ответ

0 голосов
/ 13 октября 2018

Просто начните с шаблона преобразования идентификаторов, а затем добавьте шаблон для элементов, содержащих tr children, чтобы обернуть их в table:

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

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

  <xsl:template match="*[not(self::table) and tr]">
      <xsl:copy>
          <xsl:apply-templates select="@*"/>
          <table>
              <xsl:apply-templates/>
          </table>
      </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty -development.net/ 6qVRKwV

...