我有以下xml文件:
<q1:GeneralAgenda xmlns="http://schemas.gov.sk/form/Notify.GeneralAgenda/1.1">
<q1:subject>text text text</q1:subject>
<q1:text>lorem ipsum</q1:text>
</q1:GeneralAgenda>
我创建了xsl文件:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ga="http://schemas.gov.sk/form/Notify.GeneralAgenda/1.1">
<xsl:template match="ga:GeneralAgenda">
<html>
<head>
</head>
<body>
<div id="main" class="layoutMain">
<div class="layoutRow ui-tabs ui-widget-content">
<div class="caption ui-widget-header">
<div class="headercorrection">Všeobecná agenda - oznámenie</div>
</div>
<div><label class="labelVis">Predmet: </label>
<span class="contentVis wordwrap">
<xsl:value-of select="ga:subject"/>
</span>
</div>
<div class="clear"> </div>
<div><label class="labelVis">Text: </label>
<span class="contentVis wordwrap">
<xsl:value-of select="ga:text"/>
</span>
</div>
<div class="clear"> </div>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
问题是因为&#34; q1:&#34;它不起作用。部分在xml文件中,我该如何纠正?我使用java从xml文件生成hmtl文件,当我手动删除q1时它工作正常,我认为有一种方法可以调整xsl文件,但我不知道如何。
答案 0 :(得分:2)
一般规则是:
match
指定select
或*[local-name() = '...']
属性。所以你可以使用下面的脚本,你的脚本的一些改写版本。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system= "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
<xsl:template match="*[local-name() = 'GeneralAgenda']">
<html>
<head>
</head>
<body>
<div id="main" class="layoutMain">
<div class="layoutRow ui-tabs ui-widget-content">
<div class="caption ui-widget-header">
<div class="headercorrection">Všeobecná agenda - oznámenie</div>
</div>
<div>
<label class="labelVis">Predmet: </label>
<span class="contentVis wordwrap">
<xsl:value-of select="*[local-name() = 'subject']"/>
</span>
</div>
<div class="clear"> </div>
<div>
<label class="labelVis">Text: </label>
<span class="contentVis wordwrap">
<xsl:value-of select="*[local-name() = 'text']"/>
</span>
</div>
<div class="clear"> </div>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
有关工作示例,请参阅http://xsltransform.net/pNvs5w3/1
请注意上面给出的示例中的源XML内容。
xmlns
声明必须包含:q1
前缀。
<q1:GeneralAgenda xmlns:q1="urn:dummy_q1">
如果不这样做会导致您的源XML格式不正确 甚至这样的&#34;基本&#34;实现 Xalan 失败。