XSLT转换不适用于复杂的XML

问题描述 投票:0回答:1

我有一个自定义的XML,如下所示

<AllValues xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <content>
        <data>
            <item>
                <value xsi:type="DATETIME">
                    <value>2020-12-31T09:30:00+00:00</value>
                </value>
            </item>
        </data>
    </content>
</AllValues>

[我想从已定义的样式表中将2020-12-31T09:30:00+00:00提取为September 24th, 2020 09:30。但是,在这种情况下,样式表似乎无法识别元素。

我的样式表定义如下

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
    <xsl:template match="/">
        <output>
            <xsl:variable name="month" select="substring(date, 6, 2)"/>
            <xsl:choose>
                <xsl:when test="$month=1">January</xsl:when>
                <xsl:when test="$month=2">February</xsl:when>
                <xsl:when test="$month=3">March</xsl:when>
                <xsl:when test="$month=4">April</xsl:when>
                <xsl:when test="$month=5">May</xsl:when>
                <xsl:when test="$month=6">June</xsl:when>
                <xsl:when test="$month=7">July</xsl:when>
                <xsl:when test="$month=8">August</xsl:when>
                <xsl:when test="$month=9">September</xsl:when>
                <xsl:when test="$month=10">October</xsl:when>
                <xsl:when test="$month=11">November</xsl:when>
                <xsl:when test="$month=12">December</xsl:when>
            </xsl:choose>
            <xsl:text> </xsl:text>
            <xsl:variable name="day" select="number(substring(date, 9, 2))"/>
            <xsl:value-of select="$day"/>
            <xsl:choose>
                <xsl:when test="$day=1 or $day=21 or $day=31">st</xsl:when>
                <xsl:when test="$day=2 or $day=22">nd</xsl:when>
                <xsl:otherwise>th</xsl:otherwise>
            </xsl:choose>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="substring(date, 1, 4)"/>
            <xsl:text> </xsl:text>
            <xsl:value-of select="substring(date, 12, 5)"/>
        </output>
    </xsl:template>
</xsl:stylesheet>

这的一个非常基本的方案似乎可以正常工作,但是我无法在此处转换一个复杂的xml。这是一个可行的基本情况的实现https://xsltfiddle.liberty-development.net/bEzknt7/1

非常感谢您的帮助

xml xslt transformation
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.