XSLDocument = new ActiveXObject('MSXML2.DOMDocument.3.0');

    HTMLtarget = document.all['targetDIV'];

    XMLDocument.validateOnParse = true;

    XMLDocument.load('planets.xml');

    if (XMLDocument.parseError.errorCode != 0) {

     HTMLtarget.innerHTML = 'Error!';

     return false;

    }

    XSLDocument.validateOnParse = true;

    XSLDocument load('planets.xsl');

    if (XSLDocument.parseError.errorCode != 0) {

     HTMLtarget.innerHTML = 'Error!';

     return false;

    }

    HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);

   }

   function sort(sortNode) {

    (XSLDocument.selectSingleNode('//xsl:sort/@select')).nodeValue

     = sortNode;

    HTMLtarget.innerHTML = XMLDocument.transformNode(XSLDocument);

   }

  </SCRIPT>

 </HEAD>

 <BODY ONLOAD='initialize()'>

  <CENTER>

   <DIV ID='targetDIV'></DIV>

   <BR>

   <BR>

   <INPUT TYPE='BUTTON' ONCLICK='sort('NAME')' VALUE='Sort by name'></INPUT>

   <INPUT TYPE='BUTTON' ONCLICK='sort('MASS')' VALUE='Sort by mass'></INPUT>

   <INPUT TYPE='BUTTON' ONCLICK='sort('RADIUS')' VALUE='Sort by radius'></INPUT>

   <INPUT TYPE='BUTTON' ONCLICK='sort('DAY')' VALUE='Sort by day'></INPUT>

  </CENTER>

 </BODY>

</HTML>

На самом деле загрузить документы XML и XSL в Internet Explorer можно несколькими способами. Для создания объектов XMLDocument и XSLDocument я использовал класс ActiveXObject, но эти объекты можно создавать и непосредственно обращаясь к содержащим документы XML объектам ActiveX по идентификатору класса, хранимому в реестре Windows. В следующем примере я таким образом загружу planets.xml и planets.xsl в XMLDocument и XSLDocument:

XMLDocument = document.all['XMLdoc'];

XSLDocument = document.all['XSLdoc'];

XMLDocument.load('planets.xml');

XSLDocument.load(' planets.xsl');

.

.

.

<OBJECT ID='XMLdoc' WIDTH='0' HEIGHT='0'

 CLASSID='clsid:f5078f32-c551-11d3-89b9-0000f81fe221'>

</OBJECT>

<OBJECT ID='XSLdoc' WIDTH='0' HEIGHT='0'

 CLASSID='clsid:f5078f32-c551-11d3-89b9-0000f81fe221'>

</OBJECT>

Эта техника не так надежна, как использование класса ActiveXObject, поскольку идентификаторы классов могут различаться в разных версиях Internet Explorer. (Приведены идентификаторы классов для Internet Explorer 5.5). Но есть еще один способ загрузить документы XML и XSL в Internet Explorer — при помощи участков (island) XML.

Internet Explorer и участки данных XML

В Internet Explorer есть специальный тег <XML>, при помощи которого можно создавать участки (island) XML. Участок XML может содержать либо сам код XML, либо ссылку на XML- документ.

Участки XML упрощают загрузку документов XML и XSL, поэтому их стоит здесь рассмотреть. В следующем примере я создаю два участка XML, sourceDocument и stylesheet, и загружаю planets.xml и planets.xsl, просто обратившись к ним через атрибут src:

<HTML>

 <HEAD>

  <TITLE>

   The Planets Table

  </TITLE>

  <XML id='sourceDocument' src='planets.xml'></XML>

  <XML id='stylesheet' src='planets.xsl'></XML>

  .

  .

  .

Теперь для осуществления XSLT-преобразования мне нужно только применить, как и раньше, метод transformNode и присвоить результаты элементу <DIV>, чтобы вывести их (листинг 10.4).

Листинг 10.4. Загрузка документов XML и XSL при помощи участков XML

<HTML>

 <HEAD>

  <TITLE>

   The Planets Table

  </TITLE>

  <XML id='sourceDocument' src='planets.xml'></XML>

  <XML id='stylesheet' src='planets.xsl'></XML>

  <SCRIPT FOR='window' EVENT='onload'>

   targetDIV.innerHTML =

    sourceDocument.transformNode(stylesheet.XMLDocument);

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату