Xml 缺少元素时输出文本

Xml 缺少元素时输出文本,xml,xslt,Xml,Xslt,我打赌这是一个简单的问题 我正在尝试用XSL设置xml文件的样式。我要做的是,当XML文件中的一个元素丢失时,我希望xsl输出“Missin元素” 我设法创建一个字符串,表示元素中没有数据,但当元素中没有任何数据但元素仍然存在时 我粘贴xml文件是为了更好地解释 <autoads> <ad> <type>1</type> <name>Honda</name> <m

我打赌这是一个简单的问题

我正在尝试用XSL设置xml文件的样式。我要做的是,当XML文件中的一个元素丢失时,我希望xsl输出“Missin元素”

我设法创建一个字符串,表示元素中没有数据,但当元素中没有任何数据但元素仍然存在时

我粘贴xml文件是为了更好地解释

<autoads>
    <ad>
        <type>1</type>
        <name>Honda</name>
        <model>XL 1000 V</model>
        <regyear>2001</regyear>
        <price>129900</price>
        <adtext>2001 Honda XL 1000 V, 8.900 km. hög vindruta. Pris 129.900kr,-.  </adtext>
        <addate>20020115</addate>
        <volume>1000</volume>

    </ad>
    <ad>
        <type>2</type>
        <name>Nissan</name>
        <model>Almera 1.4S</model>
        <regyear>1997</regyear>
        <price>119000</price>
        <adtext>1997 Nissan Almera 1.4S, 5 dörrar, met, 70.000 km. el.spegel/fönster, galv. kaross, c.lås, startspärr, airbag, nedfällb. baks. ABS, ute temp. R/CD, alarm, d.fäste, v.säten, s/v-hj.  EU-godk. full service, servo. Pris 119.000 kr,-.  </adtext>
        <addate>20020118</addate>
        <volume>0</volume>
        <category>5 dörrar</category>
    </ad>
</autoads>

1.
本田
XL 1000 V
2001
129900
2001本田XL 1000 V,8.900公里。hög vindruta。Pris 129.900kr,-。
20020115
1000
2.
日产
阿尔梅拉1.4S
1997
119000
1997年尼桑阿尔梅拉1.4S,5德拉尔,大都会,70000公里。斯佩格尔/芬斯特,加尔文。卡罗斯,c.lås,startspärr,airbag,nedfällb。巴克斯。ABS,ute温度。R/CD、警报、d.fäste、v.säten、s/v-hj。欧盟戈德。全方位服务,伺服。价格为119.000克朗。
20020118
0
5德拉尔
当您看到第一个元素类别中缺少元素类别时

这就是我试图用xsl字符串输出的内容,它应该打印出“category is missing”


谢谢您的帮助。

您需要指定所需的元素,并测试它们是否存在。在最简单的情况下,请使用以下内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="ad">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
            <xsl:if test="not(category)">
                <xsl:comment>category is missing</xsl:comment>
            </xsl:if>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

您需要指定所期望的元素,并测试它们是否存在。在最简单的情况下,请使用以下内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="ad">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
            <xsl:if test="not(category)">
                <xsl:comment>category is missing</xsl:comment>
            </xsl:if>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

非常感谢你!!在我的choose元素中使用了这个元素,它的工作方式和我想要的一样:)@FelipeOtarola-没问题。为了好玩,我加入了另一个更完整的解决方案。看我的编辑。你真是个绝地武士:)。我将阅读有关文档函数的内容,目前我的解决方案要简单得多,因为我刚刚开始学习xml课程。再次感谢。非常感谢!!在我的choose元素中使用了这个元素,它的工作方式和我想要的一样:)@FelipeOtarola-没问题。为了好玩,我加入了另一个更完整的解决方案。看我的编辑。你真是个绝地武士:)。我将阅读有关文档函数的内容,目前我的解决方案要简单得多,因为我刚刚开始学习xml课程。再次感谢。