Печать узлов XML для каждого элемента в одной строке - PullRequest
0 голосов
/ 24 ноября 2018

Мне нужно напечатать значения категорий и часов из всех узлов в этом xml как значения, разделенные запятыми, в одной строке через xslt -

XML

    <?xml version="1.0" encoding="UTF-8"?>
<course>   
    <subcourse>
        <code>ABC</code>
        <name>REFCOURSE</name>
        <date>Date</date>
        <category>SDF</category>
        <hours>7</hours>
    </subcourse>
    <subcourse>
        <code>DEF</code>
        <name>ORIGCOURSE</name>
        <date>Date</date>
        <category>UIT</category>
        <hours>9</hours>
    </subcourse>
    </course>

Требуется вывод -

SDF,7,UIT,9

Получив помощь от stakoverflow, вот что я сделал до сих пор -

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"  version="2.0">

    <xsl:param name="range-1-begin"  select="4"/>
    <xsl:param name="range-1-end"  select="5"/>

    <xsl:param name="range-2-begin"  select="6"/>
    <xsl:param name="range-2-end"  select="7"/>


    <xsl:output method="text" indent="yes"/>
    <xsl:strip-space elements="*"/>

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

        <xsl:template match="subcourse">
            <info><xsl:apply-templates/></info>
        </xsl:template>

        <xsl:template match="subcourse">
            <xsl:if test = "not(position()= 1)">
                <xsl:text>,</xsl:text>
            </xsl:if>
            <xsl:value-of select="."/>
        </xsl:template>


</xsl:stylesheet>

Вывод - ABCREFCOURSEDateSDF7, DEFORIGCOURSEDateUIT9

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

1 Ответ

0 голосов
/ 25 ноября 2018
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"  version="2.0">
<xsl:template match="//subcource">
<xsl:if test="category">
<xsl:if test = "not(position()=1)">
<xsl:text>,</xsl:text>
</xsl:if>
<xsl:value-of select="category"/><xsl:text>,</xsl:text><xsl:value-of select="hours"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...