Мне не удается заставить функцию id () работать в моем преобразовании xslt в соответствии с приведенным ниже примером кода, и я не уверен, почему.Когда я загружаю data.xml в браузер, я ожидаю увидеть только значения имени и размера элемента 'BC' для таблицы стилей / преобразования.Какие-либо предложения?К вашему сведению: я адаптировал пример с другого сайта .
Файл: transform.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="id('BC')/name" />
<xsl:value-of select="id('BC')/size" />
</body>
</html>
</xsl:template>
Файл: data.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xslt" ?>
<provinces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="data.xsd">
<province id="AB">
<name>Alberta</name>
<size>33</size>
</province>
<province id="BC">
<name>British Columbia</name>
<size>44</size>
</province>
<province id="MB">
<name>Manitoba</name>
<size>55</size>
</province>
</provinces>
Файл: data.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="provinces">
<xs:complexType>
<xs:sequence>
<xs:element ref="province" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="province">
<xs:complexType>
<xs:sequence>
<xs:element name="name" />
<xs:element name="size" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>