Forum Moderators: open
<html>
<head>
<script type="text/javascript">
function getIndex()
{
var x = document.getElementById("mySelect")
var y = x.options[x.selectedIndex].text
var K = xmlDoc.getElementsByTagName("dc:title")
var a,b,c,j,l;
for (j = 0 ; j < K.length ; j++ ) {
if (y == K.item(j).text) {
creator.innerHTML = j;
title.innerHTML = xmlDoc.getElementsByTagName("dc:title").item(j).text;
abstract.innerHTML = xmlDoc.getElementsByTagName("dcterms:abstract").item(j).text;
tableOfContents.innerHTML = xmlDoc.getElementsByTagName("dcterms:tableOfContents").item(j).text;
created.innerHTML = xmlDoc.getElementsByTagName("dcterms:created").item(j).text;
teacher.innerHTML = xmlDoc.getElementsByTagName("dc:contributor").item(j).text;
}
}
}
</script>
</head>
<body>
<form>
Select a book from the list:
<select id="mySelect">
</select>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("library.xml")
y = document.getElementById("mySelect");
var h,x;
var K=xmlDoc.getElementsByTagName("dc:title")
for (j = 0 ; j < K.length ; j++ ) {
x = K.item(j).text;
h = document.createElement("OPTION");
h.text = x;
y.add(h);
}
</script>
<br /><br />
<input type="button" onclick="getIndex()" value="Show index of selected book">
</input>
</form>
<table border="1">
<tr><th>Creator: </th><td id="creator"></td></tr>
<tr><th>Title: </th><td id="title"></td></tr>
<tr><th>Description:</th><td id="abstract"></td></tr>
<tr><th>Contents:</th><td id="tableOfContents"></td></tr>
<tr><th>Created:</th><td id="created"></td></tr>
<tr><th>Teacher: </th><td id="teacher"></td></tr>
</table>
</body>
</html>
This works if each book in the XML file has all elemnts.But what if the file looks like this
<library>
<book>
<dc:title>book a</dc:title>
<dc:creator>creator a</dc:creator>
<dc:creator>creator b</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2004</dcterms:created>
</book>
<book>
<dc:title>book b</dc:title>
<dc:creator>creator v</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2004</dcterms:created>
<dc:contributor>teacher a</dc:contributor>
<dc:contributor>teacher b</dc:contributor>
</book>
<book>
<dc:title>book c</dc:title>
<dc:creator>creator a</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2003</dcterms:created>
</book>
<book>
<dc:title>book d</dc:title>
<dc:creator>creator r</dc:creator>
<dc:creator>creator g</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 26, 2004</dcterms:created>
</book>
</library>
Is there a way to get only the elemts of the selected book? Because with the code i have writen if you select book a ,j will be 0 so it will return contributor teacher a which is the
xmlDoc.getElementsByTagName("dc:contributor").item(0).text and if i select book 4 it will return an error .