[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: XML,XSLT,XPath
Aleksander
Всем привет, извеняюсь если тема несовсем подходит к этому форуму.
Вобщем прошу совета smile.gif
Есть XML файл:
Код
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="XSLTFile1.xslt"?>
<ROOT >
<EmployeesCaption>
<EmployeesCaptionName>ИмяРаботника</EmployeesCaptionName>
<EmployeesCaptionTitle>ДолжностьРаботника</EmployeesCaptionTitle>
<EmployeesCaptionReportsTo>Начальник</EmployeesCaptionReportsTo>
<EmployeesCaptionPhoto>Фотография</EmployeesCaptionPhoto>
<Employees >
<EmployeeID>1</EmployeeID>
<Name>Ms. Nancy Davolio</Name>
<Title>Sales Representative</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='1']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>8 </EmployeeID>
<Name>Ms. Laura Callahan</Name>
<Title>Inside Sales Coordinator</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='8']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>7 </EmployeeID>
<Name>Mr. Robert King</Name>
<Title>Sales Representative</Title>
<ReportsTo>5</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='7']/@Photo"</Photo>
</Employees>
<Employees>
<EmployeeID>6 </EmployeeID>
<Name>Mr. Michael Suyama</Name>
<Title>Sales Representative</Title>
<ReportsTo>5</ReportsTo>
<Photo>ddbobject/Employees[@EmployeeID='6']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>5 </EmployeeID>
<Name>Mr. Steven Buchanan</Name>
<Title>Sales Manager</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='5']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>4 </EmployeeID>
<Name>Mrs. Margaret Peacock</Name>
<Title>Sales Representative</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='4']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>3</EmployeeID>
<Name>Ms. Janet Leverling</Name>
<Title>Sales Representative</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='3']/@Photo</Photo>
</Employees>
<Employees>
<EmployeeID>2 </EmployeeID>
<Name>Dr. Andrew Fuller</Name>
<Title>Vice President</Title>
<ReportsTo>2</ReportsTo>
<Photo>dbobject/Employees[@EmployeeID='2']/@Photo</Photo>
</Employees>
</EmployeesCaption>
</ROOT>

Есть XSLT:
Код
<?xml version="1.0" encoding="WINDOWS-1251"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="1" align="center">
<tr bgcolor="#CCCCCC" >
<td align="center"><strong><xsl:value-of select="//EmployeesCaptionName"/></strong></td>
<td align="center"><strong><xsl:value-of select="//EmployeesCaptionTitle"/></strong></td>
<td align="center"><strong><xsl:value-of select="//EmployeesCaptionReportsTo"/></strong></td>
</tr>
<xsl:for-each select="ROOT/EmployeesCaption/Employees">
<tr>
<td align="center"><xsl:value-of select ="Name"/></td>
<td align="center"><xsl:value-of select ="Title"/></td>
<td align="center"><xsl:value-of select ="ReportsTo"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

В браузер выводится таблица с Именем работника, его должностью и ReportsTo которая содержит номер EmployeeID начальника работника, так вот выводится не имя начальника а просто цифра, а нужно чтобы выводилось его имя.
Это делается через XPath , но КАК???!!!! Я просто уже мозг надорвал ! подскажите пожалуйсто!! ну ведь этот XPath неможет бегать по всем строкам как такое возможно??!:)
Ну можно сделать вывод только тех у кого начальник под номером 2, это ваще несложно, но чтобы вывелось чтото из другого набора этоже ваще ужасть какаято!!



Спустя 3 часа, 5 минут, 34 секунды (17.05.2008 - 18:02) ibnteo написал(а):
Цитата(Aleksander @ 17.5.2008, 15:56) [snapback]38660[/snapback]
В браузер выводится таблица с Именем работника, его должностью и ReportsTo которая содержит номер EmployeeID начальника работника, так вот выводится не имя начальника а просто цифра, а нужно чтобы выводилось его имя.
Это делается через XPath , но КАК???!!!! Я просто уже мозг надорвал ! подскажите пожалуйсто!! ну ведь этот XPath неможет бегать по всем строкам как такое возможно??!:)
Ну можно сделать вывод только тех у кого начальник под номером 2, это ваще несложно, но чтобы вывелось чтото из другого набора этоже ваще ужасть какаято!!


Код
<?xml version="1.0" encoding="WINDOWS-1251"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="1" align="center">
<tr bgcolor="#CCCCCC" >
<td align="center"><strong><xsl:value-of select="ROOT/EmployeesCaption/EmployeesCaptionName"/></strong></td>
<td align="center"><strong><xsl:value-of select="ROOT/EmployeesCaption/EmployeesCaptionTitle"/></strong></td>
<td align="center"><strong><xsl:value-of select="ROOT/EmployeesCaption/EmployeesCaptionReportsTo"/></strong></td>
</tr>
<xsl:for-each select="ROOT/EmployeesCaption/Employees">
<tr>
<td align="center"><xsl:value-of select ="Name"/></td>
<td align="center"><xsl:value-of select ="Title"/></td>
<td align="center"><xsl:value-of select ="../Employees[EmployeeID=current()/ReportsTo]/Name"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>


Спустя 13 дней, 15 часов, 50 минут, 47 секунд (31.05.2008 - 09:53) Aleksander написал(а):
ibnteo спасибо:) всё заработало.
Вот ещё вопрос появился ,можноли использовать например <xsl:value-of select="//Employees[@EmployeeID=1]/@Name"/> В ЯваСкрипте?
В таком виде:
B=document.getElementById("list").value;
SpanId=document.getElementById("Resault");
SpanId.innerHTML= <xsl:value-of select="//Employees[@EmployeeID=B]/@Name"/>;
Всё это происходит в функции , которая вызывается при изменении поля <select id="List">
которое содержит 9 ID XML элементов.
Вот я выбираю из списка один ID и в поле
<p>List: <span id="Resault" style="font-weight: 800; text-decoration: underline"></span></p>
Должен выводится атрибут @Name который соответсвует выбраному ID.
или ваобще возможноли JS с XSL вместе юзать???
Подскажите кто знает..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.