1

在编辑 Commerce Server 产品详细信息 Web 部件时,我们很难对 XSLT 模板进行更改。这些不是复杂的变化,只是很小的微小变化。模板没有问题,因为我在 w3schools XSLT 编辑器上试用过它,它工作正常。

我将模板文本粘贴到对话框中,然后单击保存以覆盖模板。

我收到错误“保存 XSLT 时出错:{0}”

相反,如果我在不使用其他编辑器的情况下编辑对话框中的文本(并在所有 CRLF 被剥离时进行格式化),它就可以工作。

我究竟做错了什么?

我希望您可以编辑提供的文本框之外的文本,因为它没有格式

以下是它从文本框中出来的方式:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="html" version="1.0" indent="yes" /><xsl:template match="/products/product"><H1><xsl:value-of select="properties/property[@name='DisplayName']" /></H1></xsl:template></xsl:stylesheet>

作为一条线。我想像这样编辑它:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="1.0" indent="yes" />
  <xsl:template match="/products/product">
    <H1>
      <xsl:value-of select="properties/property[@name='DisplayName']" />
    </H1>
  </xsl:template>
</xsl:stylesheet>

好多了。

4

1 回答 1

1

分步骤执行此操作

  1. 您可以在您选择的 IDE/编辑器中轻松编写 XSLT。

  2. 继续工作,直到满足所有要求。

  3. 最后,使用以下转换处理您的XSLT 样式表,并将结果提供给 Commerce Server:

::

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="no"/>
    <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

当对格式优雅的代码执行此转换时

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="1.0" indent="yes" />
  <xsl:template match="/products/product">
    <H1>
      <xsl:value-of select="properties/property[@name='DisplayName']" />
    </H1>
  </xsl:template>
</xsl:stylesheet>

生成了 Commerce Server 可接受的所需结果

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="html" version="1.0" indent="yes"/><xsl:template match="/products/product"><H1><xsl:value-of select="properties/property[@name='DisplayName']"/></H1></xsl:template></xsl:stylesheet>
于 2010-09-18T14:54:35.217 回答