Конвертировать xml в xml динамически с помощью Xslt. - PullRequest
0 голосов
/ 12 марта 2019

Здесь я добавил свой код employee.xml.Входные данные:

<EmployeeList>
    <employee>
        <eid>r-001</eid>
        <ename>Dinesh R</ename>
        <age>35</age>
        <deptcode>d1</deptcode>
        <deptname>Research</deptname>
        <salary>20000</salary>
    </employee>
    <employee>
        <eid>s-001</eid>
        <ename>Kanmani S</ename>
        <age>35</age>
        <deptcode>d2</deptcode>
        <deptname>Sales</deptname>
        <salary>30000</salary>
    </employee>
    <employee>
        <eid>d-001</eid>
        <ename>Kanchana M</ename>
        <age>35</age>
        <deptcode>d3</deptcode>
        <deptname>Delivery</deptname>
        <salary>20000</salary>
    </employee>
</EmployeeList>

Я хочу преобразовать xml в динамически с помощью xslt.Мой исключенный вывод:

<deptname name="Research">
    <employee>
        <eid>r-001</eid>
        <ename>Dinesh R</ename>
        <age>35</age>
        <deptcode>d1</deptcode>
        <deptname>Research</deptname>
        <salary>20000</salary>
    </employee>
</deptname>
<deptname name="Sales">
    <employee>
        <eid>s-001</eid>
        <ename>Kanmani S</ename>
        <age>35</age>
        <deptcode>d2</deptcode>
        <deptname>Sales</deptname>
        <salary>30000</salary>
    </employee>
</deptname>

Я пытался, но не смог получить исключенный вывод.Мне нужно, чтобы вывод был добавлен динамически.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019
<xsl:template match="EmployeeList">
<xsl:copy>
    <xsl:for-each-group select="employee" group-by="child::deptname">
        <xsl:element name="deptname">
            <xsl:attribute name="name"><xsl:value-of select="current-grouping-key()"/></xsl:attribute>
            <xsl:for-each select="current-group()">
                <xsl:copy-of select="*"/>
            </xsl:for-each>
        </xsl:element>
    </xsl:for-each-group>
    </xsl:copy>
</xsl:template>
0 голосов
/ 13 марта 2019
According your Question following Xsl2.0 code
<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>
<xsl:template match="EmployeeList">
    <xsl:for-each select="employee">
        <xsl:element name="deptname">
            <xsl:attribute name="name"><xsl:value-of select="child::deptname"/></xsl:attribute>
            <employee>
                <xsl:copy-of select="*"/>
            </employee>
        </xsl:element>
    </xsl:for-each>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...