parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

XML выборка из гигантского файла?

DivineArtS 18.05.2010 12:13

Возник вопрос - XML файл весит 4500 Kb потому что там текста уйма. понятно, что пользователю не надо все стразу, главу за главой он бы почитал, но не все же грузить. весь документ удалось отпарсить с помощью XSL a по частям, используя xnode - никак. но мне очень важно использование XLS! как быть? вот обработчик XLS
<?xml version="1.0" encoding="windows-1251" ?>   <!-- DWXMLSource="bible.xml" -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="body"> 
    <html> 
        <head><title><xsl:value-of select="book-title" /></title>
        <link href="bible.css" rel="stylesheet" type="text/css" />
        </head> 
        <body><xsl:apply-templates select="testament" /></body> 
    </html> 
</xsl:template> 

<xsl:template match="testament"> 
        <xsl:apply-templates select="title" />
        <xsl:apply-templates select="book" />
</xsl:template> 
<xsl:template match="book"> 
        <table cellpadding="0" cellspacing="0"><tr><td class="book" colspan="2"><xsl:apply-templates select="title" /></td></tr>
        <xsl:apply-templates select="chapter" /></table>
</xsl:template> 

<xsl:template match="chapter"> 
      <tr> <td class="chapter_head"> <xsl:apply-templates select="title" /></td><td class="text"><xsl:apply-templates select="p" /></td></tr>
</xsl:template> 

<xsl:template match="title"> 
    <h1 ><xsl:value-of select="." /></h1> 
</xsl:template> 
<xsl:template match="p"> 
    <p><xsl:value-of select="." /></p> 
</xsl:template> 
</xsl:stylesheet>
вот пример разметки xml
<?xml version="1.0" encoding="windows-1251"?>
<body>
<book-title>БИБЛИЯ</book-title>
<testament>
<title>Ветхий Завет</title>
<book>
<title>Первая книга Моисеева. БЫТИЕ</title>
<chapter>
<title>1</title>
	<p>1 В начале сотворил Бог небо и землю.</p>
	<p>2 Земля же была безвидна и пуста, и тьма над бездною, и Дух Божий носился над водою.</p>
...
</chapter>
</book>
</testament>
</body>
и вот вызов этого всего
# входной xdoc документ 
$sourceDoc[^xdoc::load[/bible/${form:book}.xml]] 

# преобразование xdoc документа шаблоном article.xsl 
$transformedDoc[^sourceDoc.transform[/bible/bible.xsl]] 

# выдача результата в HTML виде 
^transformedDoc.string[ $.method[html] ] 
я пытался использовать select, но тогда не вызвать ^sourceDoc.transform

подскажите как бы мне вытаскивать по главе или даже по стиху, и насколько ресурсоемко быдет прорабатывать парсеру документ весящий 4'529'513 b?