powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Генерировать CSS из XML с помощью XSL
13 сообщений из 13, страница 1 из 1
Генерировать CSS из XML с помощью XSL
    #39051452
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем!
Есть XML который хранить в себе данные о стиле:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 <Workbook>
    <Styles>
      <Style ss:ID="m48627752">
         <Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
           <Borders>
              <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
              <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
              <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
              <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
          </Borders>
       <Font ss:FontName="Times New Roman" x:Family="Roman"
              ss:Size="11" ss:Color="#000000" ss:Bold="1"/>
    </Style>
  </Styles>  
 </Workbook>



Из него получиться примерно вот такая CSS:
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 .m48627752{
	font-size:11.0pt;
	font-weight:bold;
	font-style:normal;
	text-decoration:none;
	font-family:"Times New Roman", serif;
	text-align:left;
	vertical-align:middle;
	border:.5pt solid black;
}


Теперь этого CSS необходимо сгенерировать с помощью XSL.

Помогите хотя бы писать вот такою:
Код: css
1.
2.
3.
4.
5.
6.
<style type="text/css">
  .m48627752{
    <!-- Элементами CSS разберусь -->
}
   
</style>



Попробовал так, и не получается:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
       <xsl:apply-templates/>  	  
	</style>
  </head>  
  <body>    
  </body>
</html> 
</xsl:template>

<!-- Styles -->
<xsl:template match="Styles/*">
 .<xsl:value-of select="name(.)"/>{}
</xsl:template>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051469
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<xsl:output method="text"

а <style> лучше убрать и засунуть в разметку. или созlавать как &lt;style&gt;
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051514
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Тогда CSS в отдельный файле будет да?
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051536
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че-то не заметил html-разметки :)

все правильно написано, кроме того, что не указан xpath к стилям.
<xsl:apply-templates/> эквивалентен <xsl:apply-templates select="*"/>

нужно select="Workbook/Styles/*"
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051590
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
В XML'е еще есть и другие элементы:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<Workbook>
    <Styles>
      <Style ss:ID="m48627752">
         ...
    </Style>
  </Styles>    
  <Table>   
    <Row>
      <Cell><Data ss:Type="String">Ведомость по складу за 15.15.2015</Data></Cell>
    </Row>
    <Row ss:AutoFitHeight="0">
      <Cell ss:MergeAcross="1" ss:StyleID="m48627752"><Data ss:Type="String">Склад:Основной склад</Data></Cell>
    </Row>
    ...
    </Table>
 </Workbook>


И поэтому я думаю <xsl:apply-templates select="*"/> будет не корректно!
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051597
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я о том и говорю. и написал, как будет корректно.
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051602
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Вот так что ли:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
<head>        
        <style type="text/css">
          <xsl:apply-templates/>  	  
        </style>
</head>
...
<xsl:template match="Workbook/Styles">
  <xsl:for-each select="./*">
    .<xsl:value-of select="name()"/>{}
  </xsl:for-each> 
</xsl:template>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051605
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
       <xsl:apply-templates select="Workbook/Styles/*"/>  	  
	</style>
  </head>  
  <body>    
  </body>
</html> 
</xsl:template>

<!-- Styles -->
<xsl:template match="Styles/*">
 .<xsl:value-of select="name(.)"/>{}
</xsl:template>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051614
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Так у меня ничего не получается, вот выходной HTML:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">

</style>
</head>
<body></body>
</html>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051624
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно!
Так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xsl:template match="/">
    <html>
      <head>        
        <style type="text/css">
          <xsl:for-each select = "./*">
           .<xsl:value-of select="name(.)"/>{}
          </xsl:for-each>  	  
        </style>
      </head>
      <body>         
      </body>
    </html>
</xsl:template>


Получается вот такой HTML:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
   .Workbook{}          
</style>
</head>
<body></body>
</html>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051626
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значить рекурсия не входит до элемента <Styles>
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051671
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не указано пространство имен экселя

Код: xml
1.
2.
3.
4.
5.
<xsl:stylesheet ... xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

<xsl:apply-templates select="ss:Workbook/ss:Styles/*"/>

<xsl:template match="ss:Styles/*">
...
Рейтинг: 0 / 0
Генерировать CSS из XML с помощью XSL
    #39051700
Alimkulov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Да действительно! Спасибо Вам большое!
Вот рабочий вариант:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="ss:Workbook">
  <html>
    <head>        
      <style type="text/css">
        <xsl:apply-templates select="./ss:Styles"/> 
      </style>
    </head>
    <body>
       <xsl:apply-templates select="./ss:Worksheet"/>          
    </body>
 </html>
</xsl:template>

<xsl:template match="ss:Styles/*">
    .<xsl:value-of select="@ss:ID"/>{}
</xsl:template>

...
<!-- Здесь обработка ячейки --> 
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Генерировать CSS из XML с помощью XSL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]