Проблема обработки XSLT с кодом, специфичным для asp - PullRequest
1 голос
/ 27 июля 2010

У меня есть файл asp с кодом ниже:

  <html>
    <head>
      <link rel="stylesheet" href="<%=bb_style%>"/>
      <title>asdf</title>
    </head>

Мне нужно включить заголовок из этого файла в другой файл asp, сформированный преобразованием xslt.Я использую этот код:

<xsl:value-of select="document(content)/html/head/title"/>

Но мне ничего не возвращают из этого кода.Я виню href="<%=....%>", но не уверен и не знаю, как избежать этой проблемы.

Ответы [ 3 ]

1 голос
/ 27 июля 2010
  <html> 
    <head> 
      <link rel="stylesheet" href="<%=bb_style%>"/> 
      <title>asdf</title> 
    </head>

Это не правильно сформированный документ - не только тег верхнего элемента не закрыт, но, что более важно, потому что в XML символ < недопустимо внутри атрибута.

Поэтому функция document () не преуспевает при синтаксическом анализе этого документа в формате XML, и это проблема, с которой вы столкнулись.

0 голосов
/ 27 июля 2010

Обрабатывать не XML-деревья можно в XSLT 2.0. Эта таблица стилей, с любым вводом:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:analyze-string select="unparsed-text('some.asp')" regex="&lt;title>(.*)&lt;/title>">
            <xsl:matching-substring>
                <xsl:value-of select="regex-group(1)"/>
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:template>
</xsl:stylesheet>

Выход:

asdf

С помощью 'some.asp', например:

<html>    
    <head>    
      <link rel="stylesheet" href="<%=bb_style%>"/>    
      <title>asdf</title>    
    </head>
</html>    
0 голосов
/ 27 июля 2010

Я не знаю ASP, но держу пари, что есть лучший способ включить материал (например, специальную директиву include , присутствующую во всех хороших шаблонизаторах и веб-фреймворках).

Кусок XML, который вы показываете, на самом деле не является XML, потому что вы не можете иметь буквенные угловые скобки в качестве содержимого.Вам нужно написать их как &lt; и &gt;.С другой стороны, это, скорее всего, не будет работать с ASP, потому что оно точно зависит от наличия <%=.

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