我需要在我的xslt中写一个子句,它说明一个元素是否存在显示文本节点,如果它不存在,则不显示任何内容。如果文本节点是特定单词,我可以找到如何写,但如果元素存在则不能写。
非常感谢任何建议。
PS:xslt / xml等新手
例如:XML代表一个包含页面的书。该页面的一个版本有一个标题。下面是一个包含四列和20行的表。在这下面是一个页脚。此页脚不在页面的其他版本上。我的xslt需要将xml转换为可视化表示的网页。
因此,xml的元素为<Footer>
,模式中的minOccurs为0。
答案 0 :(得分:4)
这可以通过省略比较来完成,例如
<xsl:if test='root/element'>
但是,最简单的方法是使用xsl:templates
因此对于xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<page>
<title>Franks</title>
<header>header text</header>
<bodytext>here is the body text</bodytext>
</page>
<page>
<title>Joes</title>
<footer>footer text</footer>
<bodytext>here is the body text2</bodytext>
</page>
</root>
xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="page"></xsl:apply-templates>
</xsl:template>
<xsl:template match="page">
<h1>
<xsl:value-of select="title"/>
</h1>
<p>
<xsl:value-of select="bodytext"/>
</p>
<xsl:apply-templates select="footer"/>
</xsl:template>
<xsl:template match="footer">
<p>
<xsl:value-of select="."/>
</p>
</xsl:template>
</xsl:stylesheet>
说明了这可以做到的方式。 有关选择的更多信息,请查看w3schools xpath tutorial。