Изменить шрифт в XML с помощью XSLT - PullRequest
1 голос
/ 19 февраля 2009

Я новичок в XSLT. Я пытаюсь изменить размер шрифта определенного текста в файле XML с помощью XSLT. Например, у меня есть файл CDCatalog.xml со следующими данными.

  <?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="cdcat.xsl"?>

<catalog>
 <cd>
  <title>Empire Burlesque</title> 
  <artist><SmallText>Bob Dylan</SmallText><LineBreak/>*</artist>
  <country>USA</country>
  <company>Columbia</company> 
  <price>10.90</price> 
  <year>1985</year> 
  </cd>
</catalog>

и файл cdCat.XSL -

<?xml version="1.0" encoding="ISO-8859-1" ?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
  <xsl:include href="cdCatalog.xsl" /> <!-- I added this -->
<xsl:template match="/">
 <html>
 <body>
  <h2>My CD Collection</h2> 
 <table border="1">
 <tr bgcolor="#9acd32">
  <th align="left">Title</th> 
  <th align="left">Artist</th> 
  </tr>
 <xsl:for-each select="catalog/cd">
 <tr>
 <td>
  <xsl:value-of select="title" /> 
  </td>
 <td>
 <xsl:value-of select="artist" /> 
  </td>
  </tr>
  </xsl:for-each>

  </table>
  </body>
  </html>
  </xsl:template>

</xsl:stylesheet> 

Я добавил новый xsl файл cdCatalog.XSL file со следующими подробностями -

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="LineBreak">
    <br/>
</xsl:template>

<xsl:template match="Superscript">
    <sup>
        <xsl:value-of select="."/>
    </sup>
</xsl:template>

<xsl:template match="SmallText">
    <font size="1">
        <xsl:value-of select="."/>
    </font>
</xsl:template>
</xsl:stylesheet>

и включил этот файл в файл CDCat.xsl.и добавил теги - <smallText>, <LineBreak> в файл CdCatalog.xml. Теперь, когда я открываю XML-файл, я не вижу ни LineBreak, ни разницу в размере шрифта. Может кто-нибудь предложить, если я что-то упустил.

Заранее спасибо Sai

Ответы [ 3 ]

2 голосов
/ 19 февраля 2009

Вам необходимо использовать apply-templates, чтобы указать, где должны совпадать ваши шаблоны.

0 голосов
/ 19 февраля 2009

Между этими двумя открывающими тегами:

<html>
<body>

... Я бы поместил ссылку на таблицу стилей, которая определяет размеры шрифта. В качестве альтернативы (и полезно, если вы хотите, чтобы автономный HTML-файл отправлялся по электронной почте), вы можете вместо этого поместить блок стиля.

0 голосов
/ 19 февраля 2009

XML ничего не говорит о представлении, вот и весь смысл. Это формат данных .

Если вы хотите, чтобы ваш XSLT выводил туда, где имеет значение презентация, я предлагаю вам преобразовать в HTML и позволить HTML / CSS обрабатывать стили.


Теперь, увидев ваш реальный код (подсказка: используйте форматирование при создании вопросов), не используйте тег шрифта. Семантически и на практике вам нужны только заголовки <h1>, <h2>, <h3> и т. Д., И я все равно рекомендую вам добавить туда ссылку CSS. Ох и <xsl:output method="html" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...