- PR -

XMLとXSLとVBScriptで検索抽出

1
投稿者投稿内容
しょうご
会議室デビュー日: 2002/05/07
投稿数: 6
投稿日時: 2002-12-24 09:47
 こんにちは。

 市販のサンプル集を参考に、はりぼてで検索システムを作っています。開発に行き詰まっているのでお知恵を貸してください。

 XML文書から複数のXSLとVBScriptを使って検索し、さらにその結果を一覧表示するというものです。

<!-- 以下がXML文書 customer.xml -->

<?xml version="1.0" encoding="Shift-JIS"?>
<All>
<data>
<kanNo>イ-1</kanNo>
<key>イ-001</key>
<bookname>つれづれ草画巻物</bookname>
<yomi>ツレヅレグサエマキモノ</yomi>
<kangou>辰</kangou>
<eda></eda>
<number>65</number>
<d_volume>1巻</d_volume>
<r_volume></r_volume>
<type>写本 巻子</type>
<era>江戸時代 天保6年(1835)写</era>
<author>著:吉田兼好</author>
</data>
<data>
<kanNo>イ-2</kanNo>
<key>イ-002</key>
<bookname>小藤太物語</bookname>
<yomi>コトウタモノガタリ</yomi>
<kangou>辰</kangou>
<eda></eda>
<number>56</number>
<d_volume>1巻</d_volume>
<r_volume></r_volume>
<keitai>写本 巻子</keitai>
<era>室町時代</era>
<author></author>
</data>
</All>

<-- XML文書ここまで -->

<!-- 以下がXSL category01.xsl -->

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.01" encoding="Shift_JIS" indent="yes" />
<xsl:template match="/">
<html lang="ja">
<head>
<title></title>
</head>
<body background="image/back02.jpg">
</body>
</html>
<div>
<h1>第一門 神書及び宗教</h1>
<table>
<xsl:for-each select="All/data">
<xsl:if test="contains(era,'室町')">
<tr>
<td>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="url" />
</xsl:attribute>
<xsl:value-of select="bookname" />
</xsl:element>
</td>
<td><xsl:value-of select="kanNo" /></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</div>
</xsl:template>
</xsl:stylesheet>

<-- XSLここまで -->

<!-- 以下が抽出するaspコード -->

<%@ LANGUAGE=VBScript %>

<%
set Domobj = server.CreateObject("microsoft.xmlDom")
Domobj.load(server.mappath("CUSTOMER.XML"))
set root = Domobj.documentElement
count = root.selectNodes("//data").length
%>

<script type="text/vbscript">
<!--
option explicit
dim xmldoc,stylesheet
dim styleSource,htmlSource,no

sub window_onload()
set xmldoc=createObject("Microsoft.XMLDom")
xmldoc.async=false
xmldoc.load("customer.xml")
end sub

sub go(no)
select case no
case 1
styleSource="category01.xsl"
case 2
styleSource="category02.xsl"
・・・以下xslが続く
     case else
exit sub
end select
set stylesheet=createObject("Microsoft.XMLDom")
stylesheet.async=false
stylesheet.load(styleSource)
htmlSource=xmldoc.transformNode(stylesheet)
document.write(htmlSource)

end sub

<-- aspここまで -->

該当する時代の書名と番号を一旦XSLで取り出し(ここでHTML表示。ここまではできています)、さらにその後に書名をクリックしたら該当するXMLの情報すべてを表示するということがしたいのです。

ご面倒かとは思いますが、よろしくお願いいたします。

[ メッセージ編集済み 編集者: しょうご 編集日時 2002-12-24 09:50 ]

[ メッセージ編集済み 編集者: しょうご 編集日時 2002-12-24 10:10 ]
1

スキルアップ/キャリアアップ(JOB@IT)