在XSL文件中包含XML字段

时间:2011-03-21 19:35:27

标签: xml xslt stylesheet

我有一个XML配置文件,我想从该文件中提取一个字段并将其包含在我的XSL中。

以下是我遇到的例子:

<xsl:template match="">
  <html>
    <head>
      <title>My Page</title>
      <!-- CSS styles included here -->
      <xsl:copy-of select="document('style.xml')/style" />
    </head>
    <body>
      <!-- ... -->
    </body>
  </html>
</xsl:template>

但这并不能解决我的问题,因为它包含整个.xml文件。我只想要包含xml文件中的一个属性,所以我必须在xsl中解析它并仅包含该节点。我该怎么做?

谢谢

从评论中更新

  

如果我在我的网站中加入以下内容   XSL:

<xsl:copy-of select="document('cmsaENV.xml')/STR_ENV_PROPS/text()"/>
     

我的xml包含:

<STR_ENV_PROPS value="c:/apps/cit/deploy/d_cmsadm/cmsa_applicationEnv.xml"/>
     

然后是字符串   "c:/apps/cit/deploy/d_cmsadm/cmsa_applicationEnv.xm"   将放在我的xsl里面?这是   正确的吗?

1 个答案:

答案 0 :(得分:4)

我不确定能得到你想要的东西,但是如果你只想包含<style>元素的内容(而不是元素本身),请替换

<xsl:copy-of select="document('style.xml')/style" />

<xsl:value-of select="document('style.xml')/style/text()" />

text()选择导入文档中style元素的文字内容。

编辑:如果您想要属性的值而不是文本内容,则需要以下内容:

<xsl:value-of select="string(document('style.xml')/style/@someAttribute)" />

请注意,您需要将属性转换为常规文本字符串,我使用string()函数。