Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вопрос по XSLT
|
|||
|---|---|---|---|
|
#18+
Пожалуйста, объясните чайнику! Задача - вывести данные из обычного DataSet в Excel, причем формат отчета довольно сложный, описывать его не буду так как это в общем-то неважно. Решил что буду делать XML+XSLT=>XML. Самые основные вещи понятны, в частности, каким должен быть XML для того чтобы его прочитал Excel написано вот тут . Предположим, таблица из DataSet'a в исходном XML выглядит так: <myTable> <myColumn1>some data 1..<myColumn1> <myColumn2>some data 2..<myColumn2> ... </myTable> Надо вывести ее на лист Excel, меняя стиль строк или отдельных ячеек в зависимости от их содержания (вроде бы классическая задача, но неужели никому не попадалась? нигде не встречал чтоб было разобрано..) Пока что понял только, что можно использовать <xsl:choose>, загоняя целиком строки (<Row></Row>) внутрь тегов <xsl:when></xsl:when> и <xsl:otherwise></xsl:otherwise>. Но это неудобно, так как из-за того, что нужно всего-то для некоторых записей таблицы поменять ss:StyleID="Style1" на ss:StyleID="Style2", приходится копипастить целиком шаблон строки из одного <xsl:when> в другой.. короче, должно же быть что-то вроде переменных, которые потом можно подставить в тег? Как использовать <xsl:variable> и <xsl:param> в моем случае, если честно, не понимаю совсем (видимо не понимаю принципа их действия), хотя читал документацию по ним в MSDN, в общем смысл такой, как я понял, что им нельзя присваивать значения - а какие же это тогда переменные-то? Вот XSLT: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <xsl:template match="/"> <xsl:processing-instruction name="mso-application"> <xsl:text>progid="Excel.Sheet"</xsl:text> </xsl:processing-instruction> <Workbook> <Styles> <Style ss:ID="Style1" ss:Name="Style1">...</Style> <Style ss:ID="Style2" ss:Name="Style2">...</Style> </Styles> <Worksheet > <Table > <xsl:apply-templates select="//myTable"> </Table> </Worksheet> </Workbook> </xsl:template> <xsl:template match="myTable"> <xsl:choose> <xsl:when test="myColumn1='Style1'"> <Row ss:StyleID="Style1"> <Cell><Data ss:Type="String"><xsl:value-of select="myColumn1"/></Data></Cell> <Cell><Data ss:Type="String"><xsl:value-of select="myColumn2"/></Data></Cell> ... </Row> </xsl:when> <xsl:otherwise> <Row ss:StyleID="Style2"> <Cell><Data ss:Type="String"><xsl:value-of select="myColumn1"/></Data></Cell> <Cell><Data ss:Type="String"><xsl:value-of select="myColumn2"/></Data></Cell> ... </Row> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> PS Да и с параметром test тега <xsl:when> тоже нифига не понятно, везде в документации про какой-то таинственный Expression, а что он из себя представляет, какой синтаксис, функции, операторы, как проверить на NULL и т.п. что-то нигде нифига.. все приходится методом тыка изучать :( PPS Видимо у этого языка какая-то логика своя, которую я не понимаю.. А если ответ на непосредственный вопрос дать сходу сложно, то может быть, посоветуете почитать что-нибудь, чтоб врубиться во все это? С уважением! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 17:31 |
|
||
|
вопрос по XSLT
|
|||
|---|---|---|---|
|
#18+
Если менять стиль надо в зависимотси от содержания тега <myColumnХХ>, то скорее всего это можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Вариант №2, если по имени тега(столбца) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. С Уважением, Измайлов Ф.В. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 19:10 |
|
||
|
вопрос по XSLT
|
|||
|---|---|---|---|
|
#18+
Спасибо! на <xsl:attribute> наткнуться не удалось - а он действительно решает много проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2005, 09:24 |
|
||
|
вопрос по XSLT
|
|||
|---|---|---|---|
|
#18+
кстати у меня есть в XSLT русский комментарий, вроде работает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2005, 11:38 |
|
||
|
вопрос по XSLT
|
|||
|---|---|---|---|
|
#18+
Значит я кодировку не меняю, надо будет разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2005, 12:14 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=32937770&tid=1394419]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 336ms |

| 0 / 0 |
