разделить разные атрибуты двух элементов на несколько повторяющихся строк - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть XML-файл, который содержит атрибут и тип данных атрибута, как это:

<document>
<ROOT>
    <Data X="1233" XType="Integer"  Z="abcd" ZType="String" />
    <Info T="1:30:57" TType="Date" F="xyz" FType="String" />
</ROOT>
</document>

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

<document>
<ROOT>
    <Data X="1233" XType="Integer"  />
    <Data Z="abcd" ZType="String" />
    <Info T="1:30:57" TType="Date"/>
    <Info F="xyz" FType="String" />
</ROOT>
</document>

Я много погуглил, чтобы найти решение для разделениякаждый два атрибута .. но не найдено решение каких-либо предложений?Спасибо

1 Ответ

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

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

Сначала используйте шаблон идентификации для копирования всех элементов

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

Чем дескриптор Dataи Info в другом шаблоне для группировки по первому символу атрибута.

<xsl:template match="Data|Info">
    <xsl:variable name="currentelement" select="local-name(.)"/>
    <xsl:for-each-group select="@*" group-by="upper-case(substring(local-name(.), 1,1))">
     <xsl:element name="{$currentelement}">
         <xsl:copy-of select="current-group()"></xsl:copy-of>
     </xsl:element>   
    </xsl:for-each-group>
</xsl:template>

Вы можете увидеть трансформацию на https://xsltfiddle.liberty -development.net / 3NzcBtF

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