Сохранение шаблона XSLT в веб-части Commerce Server 2009

При редактировании веб-части с подробным описанием продукта Commerce Server у нас возникают большие трудности с внесением изменений в шаблон 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>

Гораздо приятнее.

1 ответ

Решение

Сделайте это по шагам:

  1. Вы можете написать свой XSLT с комфортом в IDE/ редакторе по вашему выбору.

  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>
Другие вопросы по тегам