XSLT поиск ссылок внутри тегов в документах XML - PullRequest
1 голос
/ 29 июня 2010

Есть ли способ заставить таблицу стилей xsl распознавать, когда внутри тега в документе xml появляется ссылка, и превращать ее в рабочую ссылку?

Пример:

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

<people>
   <person>
      <name>Guy 1</name>
      <bio>Guy 1 is a guy.</bio>
   </person>

   <person>
      <name>Guy 2</name>
      <bio>Guy 2 is from <a href="http://www.example.com">somewhere</a>.</bio>
   </person>
</people>

ПареньБиография 1 должна отображаться как обычный текст, в биографии Гая 2 должна быть рабочая ссылка.

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

Есть ли способ получить xsl таблица стилей распознает, когда ссылка появляется внутри тега в XML документ и превратить его в рабочий ссылка

Да. Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
   <table border="1">
     <xsl:apply-templates/>
   </table>
 </xsl:template>

 <xsl:template match="person">
   <tr>
     <xsl:apply-templates/>
   </tr>
 </xsl:template>

 <xsl:template match="person/*">
   <td><xsl:copy-of select="node()"/></td>
 </xsl:template>
</xsl:stylesheet>

при применении к предоставленному документу XML:

<people>
   <person>
      <name>Guy 1</name>
      <bio>Guy 1 is a guy.</bio>
   </person>

   <person>
      <name>Guy 2</name>
      <bio>Guy 2 is from <a href="http://www.example.com">somewhere</a>.</bio>
   </person>
</people>

дает желаемый результат :

<table border="1">
   <tr>
      <td>Guy 1</td>
      <td>Guy 1 is a guy.</td>
   </tr>

   <tr>
      <td>Guy 2</td>
      <td>Guy 2 is from <a href="http://www.example.com">somewhere</a>.</td>
   </tr>
</table>
1 голос
/ 29 июня 2010

Это будет работать сразу после установки, если вы пытаетесь отобразить это в формате HTML:

<html>
<body>
  <xsl:for-each select="people/person">
     <div>
       <xsl:value-of select="name"/>
     </div>
     <div>
       <xsl:copy-of select="bio"/>
     </div>
  </xsl:for-each>
</body>
</html>

РЕДАКТИРОВАТЬ: изменено значение для копирования. Смотрите это обсуждение: Как сохранить теги разметки?

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