2013-05-06 41 views
1

我真的不明白这一点。在下面运行我的样式表时,为什么我的参数(参见下面的XML参数)被打印?这是唯一被印刷的东西。我希望没有打印。输出是样式表正在打印数据。为什么?

trueSelskapet1000548 

样式表:

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

<xsl:template match="verticaldata/menuitems/menuitem"> 

</xsl:template> 

源XML(仅仅是个开始,其有效):

<verticaldata> 
    <context languagecode="en"> 
     <querystring/> 
    </context> 
    <menuitems istop="yes"> 
     <menuitem key="548" menukey="0" modifier="CF9FEC4718E41289CF71F83EC7C8983AA9C76E10" order="57" owner="5C2894E9CAD0B5B7B9DACE714D67651570BD1DD6" timestamp="2013-05-02 16:36" type="content" visible="yes"> 
      <name>NAME</name> 
      <subtitle>NAME</subtitle> 
      <description/> 
      <keywords/> 
      <parameters> 
       <parameter name="pageRelationType" override="false">Selskapet</parameter> 
       <parameter name="subMenuItem" override="false">true</parameter> 
       <parameter name="centreColumnHeight" override="false">1000</parameter> 
      </parameters> 
      <data cachedisabled="true"/> 

我不知道。

编辑:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xsl:stylesheet [ 
    <!ENTITY nbsp "&#160;"> 
    ]> 
<xsl:stylesheet 
    version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:portal="http://www.enonic.com/cms/xslt/portal" 
    exclude-result-prefixes="#all"> 

    <xsl:output indent="no" method="html" omit-xml-declaration="yes"/>  
    <xsl:output indent="no" method="html" omit-xml-declaration="yes"/> 
+0

我找到了答案 http://stackoverflow.com/questions/5083511/xslt-1-0-text-nodes-printing-by-default – pethel 2013-05-06 14:49:54

回答

2

快速注:前进,创建问题,其中贡献者可以轻松地复制/粘贴您提供的XML,XSLT等(即,确保它是合格的) 。不这样做会造成不必要的挫折,导致您的问题被忽略。

随着中说:

你所看到的结果是100%的预期,归因于built-in template rule(重点煤矿):

当一个节点通过XSL选择:应用模板和在可用于处理该节点的样式表中没有 模板规则, 替代地评估了内置模板规则。文档节点和元素节点的内置模板 规则会导致处理 节点的子节点; 节点的内置规则和属性 节点导致文本被复制到结果树中。

以及以后:

内置的文本模板规则和属性节点返回包含上下文节点的字符串值的文本 节点,除非 字符串值零长度,在这种情况下,它返回一个空的 序列。它实际上是:

<xsl:template match="text()|@*" mode="#all"> 
    <xsl:value-of select="."/> 
</xsl:template> 

所以,因为你还没有定义直接解决那些文本节点,文本节点内置模板隐式调用模板;因此,您将获得该文本的字符串值。

+0

那不是完整的XML。我的意思是原文是有效的。谢谢 – pethel 2013-05-06 15:15:22

+0

@ user874774 - 不客气! – ABach 2013-05-06 15:17:27

+1

@ user874774:我认为你们的意思是“格式良好”而不是“有效”(http://stackoverflow.com/questions/134494/is-there-a-difference-between-valid-xml-and-well-形成-XML)。该XML没有与其关联的DTD。 – LarsH 2013-05-06 19:10:55