как вывести все xml в xls? - PullRequest
       46

как вывести все xml в xls?

2 голосов
/ 15 июня 2011

Я пытаюсь разработать веб-часть для SharePoint, и, похоже, мне нужно научиться XSLT , чтобы сделать это, изменив itemsStyle.xsl и настроив contentquery.webpart.

Я добавляю шаблоны к своему текущему itemsStyle.xsl, вот мой текущий код:

Я пытаюсь сделать вывод целых файлов XML, потому что я не знаю, как он отформатирован (я не знаю, где его берет SharePoint)

Пока что я могу вывести имя атрибута через name(), но text() ничего не вернуть:

<xsl:template name="printP" match="Row[@Style='printP']" mode="itemstyle">
  <xsl:for-each select="@*">
    Property:<xsl:value-of select="name()"/> |
    Value:<xsl:value-of select="text()"/><br/>
  </xsl:for-each>
</xsl:template>

Любые другие предложения о том, как выяснить формат XML, приветствуются.

редактировать : удалена ненужная часть.

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Чтобы вывести значение узла атрибута, используйте select=".":

Value:<xsl:value-of select="."/>

text() выбирает любые текстовые узлы, которые являются дочерними элементами текущего узла. Только узлы элементов имеют дочерние текстовые узлы; атрибуты нет.

Однако, если вы пытаетесь скопировать полный исходный XML-документ в выходной файл без изменений, затем выбросить все эти шаблоны и использовать преобразование идентификации:

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

Это скопирует все без изменений (как XML, а не текст).

2 голосов
/ 15 июня 2011

Я могу вывести имя атрибута через имя (), но text () ничего не вернуть

<xsl:for-each select="@*">
    Property:<xsl:value-of select="name()"/> |
    Value:<xsl:value-of select="."/><br/>
</xsl:for-each>
...