Я использую XSLT для преобразования XML-файлов в формат, который Excel может разграничить (пример кода показан ниже). Например, при открытии в Excel, то разделителями версия может выглядеть примерно так:Использование XSLT для разбиения строки
+---------------+---------------+----------+
|URL |Title | Version |
+---------------+---------------+----------+
|dogs_are_cool |Dogs are cool | May 2013 |
+---------------+---------------+----------+
Проблема связана с тем, что каждый URL имеет версию вставляться в конце. Используя предыдущий пример, dogs_are_cool
на самом деле dogs_are_cool_may2013.html
.
Я хотел бы сделать две вещи с этой приложенном версии:
- Удалить версию при печати URL.
- Реформат и печать версии.
Я предполагаю, что лучший способ сделать это - каким-то образом разделить URL-адрес на символы подчеркивания. Затем поместите последний элемент в одну переменную и напечатайте остальные элементы в порядке - вставляя символы подчеркивания обратно.
Я не уверен, как это сделать.
Пример XML:
<contents Url="toc_animals_may2013.html" Title="Animals">
<contents Url="toc_apes_may2013.html" Title="Apes">
<contents Url="chimps_may2013.html" Title="Some Stuff About Chimps" />
</contents>
<contents Url="toc_cats" Title="Cats">
<contents Url="hairless_cats_may2013.html" Title="OMG Where Did the Hair Go?"/>
<contents Url="wild_cats_may2013.html" Title="These Things Frighten Me"/>
</contents>
<contents Url="toc_dogs_may2013.html" Title="Dogs">
<contents Url="toc_snorty_dogs_may2013.html" Title="Snorty Dogs">
<contents Url="boston_terriers_may2013.html" Title="Boston Terriers" />
<contents Url="french_bull_dogs_may2013.html" Title="Frenchies" />
</contents>
</contents>
</contents>
Пример XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<!-- This variable sets the delimiter symbol that Excel will use to seperate the cells -->
<xsl:variable name="delimiter">@</xsl:variable>
<xsl:template match="contents">
<!-- Prints the URL -->
<xsl:value-of select="@Url"/>
<xsl:copy-of select="$delimiter" />
<!-- Prints the title -->
<xsl:apply-templates select="@Title"/>
<xsl:copy-of select="$delimiter" />
<!-- I'd like to print the version here -->
<xsl:copy-of select="$delimiter" />
<xsl:template match="/">
<xsl:apply-templates select="//contents"/>
</xsl:template>
</xsl:stylesheet>
Это прекрасно работает! Спасибо за помощь! – mrthetooth