Я хочу получить атрибуты ID, LASTEDITED, EXPIRESS в корневом элементе.
Просто используйте :
/*/@id
Thisвыбирает атрибут id
верхнего элемента XML-документа.
/*/@lastEdited
Выбирает атрибут lastEdited
верхнего элемента XML-документа.
/*/@expires
Thisвыбирает атрибут expires
верхнего элемента XML-документа.
В качестве альтернативы все эти три атрибута можно выбрать с помощью одного выражения XPath :
/*/@*[contains('|id|lastEdited|expires|',
concat('|', name(), '|')
)
]
Проверка на основе XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select=
"/*/@*[contains('|id|lastEdited|expires|',
concat('|', name(), '|')
)
]">
<xsl:value-of select=
"concat('
',
name(),
' = ',
.
)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование XSLT применяется к предоставленному документу XML :
<p:educationProvider xmlns:p="http://skolverket.se/education/provider/1.0" xmlns="http://skolverket.se/education/commontypes/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expires="2015-01-31" id="provider.uh.msb" lastEdited="2012-11-01T12:51:37" xsi:schemaLocation="http://skolverket.se/education/provider/1.0 educationProvider.xsd">
<p:vCard>
<VERSION/>
<FN/>
<N/>
<ADR>
<LOCALITY>KARLSTAD</LOCALITY>
<PCODE>651 81</PCODE>
</ADR>
<TEL>
<NUMBER>0771-240240</NUMBER>
</TEL>
<EMAIL>
<USERID>utbildning@msbmyndigheten.se</USERID>
</EMAIL>
<ORG>
<ORGNAME>Myndigheten för samhällsskydd och beredskap</ORGNAME>
</ORG>
<URL>http://www.msbmyndigheten.se</URL>
</p:vCard>
</p:educationProvider>
вычисляется выражение Xpath и для каждого из выбранных атрибутов выводятся их имя и значение :
expires = 2015-01-31
id = provider.uh.msb
lastEdited = 2012-11-01T12:51:37