Fonction ms:type-is
Teste si le type de données du nœud actuel appartient à l'espace de noms fourni.Le type de données et l'espace de noms sont spécifiés dans les arguments.
boolean ms:type-is(string URI, string local-name)
Paramètres
string URI
URI d'espace de noms pour le type de données par rapport auquel le type de données actuel est évalué.string local-name
Nom local du type de données par rapport auquel le type de données actuel est évalué.
Notes
La fonction retourne true si le nœud actuel est du type de données spécifié appartenant à l'espace de noms donné.Sinon, elle retourne false.Si local-name fait référence au type de données non déclaré dans l'espace de noms donné (URI), la fonction retourne false.Si des types de données sans nom sont définis dans l'espace de noms donné, la fonction retourne également false.
La fonction connaît l'héritage XSD, donc, si le type « b » provient de « a », type-is("http://www.example.microsoft.com/catalog", "a") retourne true pour le nœud de type « b ».
Exemple
L'exemple suivant utilise une règle de modèle XSLT pour sélectionner tous les éléments de books.xml dont le type de données est date, comme défini dans books.xsd.Il indique également comment effectuer la requête à l'aide d'une instance de DOM XML.
Fichier XML (books.xml)
Utilisez books.xml.
Fichier XSD (books.xsd)
Utilisez books.xsd.
Fichier XSLT (books.xslt)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="text()"/>
<xsl:output method="html"
omit-xml-declaration="yes"/>
<xsl:template match="/">
<H3>nodes of date data types:</H3>
<xsl:apply-templates select=
"//*[ms:type-is('http://www.w3.org/2001/XMLSchema','date')]"/>
</xsl:template>
<xsl:template match="*">
<DIV>
<xsl:value-of select="name()"/> =
<xsl:value-of select="."/>
</DIV>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Fichier HTML (books.html)
Le fichier HTML contient un JScript qui gère le chargement de fichiers XML, XSLT et XSD.
<html>
<head>
<script>
function init() {
try {
var objxsd = new ActiveXObject("Msxml2.XMLSchemaCache.6.0");
var objxml = new ActiveXObject("Msxml2.DOMDocument.6.0");
var objxsl = new ActiveXObject("Msxml2.DOMDocument.6.0");
// namespace uri ("urn:books") must be declared as one of the
// namespace delarations in the "books.xml" that is an instance
// of "books.xsd"
objxsd.add("urn:books", "books.xsd");
objxml.schemas = objxsd;
objxml.setProperty("SelectionLanguage", "XPath");
objxml.setProperty("SelectionNamespaces",
"xmlns:ms='urn:schemas-microsoft-com:xslt'");
objxml.async=false;
objxml.validateOnParse=true;
objxml.load("books.xml");
objxsl.async=false;
objxsl.load("books.xslt");
// Select nodes of 'date" type using DOM:
var nodes = objxml.selectNodes("//*[ms:type-is(\
'http://www.w3.org/2001/XMLSchema','date')]");
result ="<h2>used in a DOM</h2> ";
result += "<h3>nodes of date data types</h3>";
for (i=0; i<nodes.length; i++) {
result += "<DIV>"+nodes.item(i).nodeName
+"=>"+nodes.item(i).text+"</DIV>";
}
// Select nodes of 'date" type using XSLT:
result += "<h2>Used in an XSLT</h2>";
result += objxml.transformNode(objxsl);
document.body.innerHTML = result;
}
catch (e) {
alert(e.description);
}
}
</script>
</head>
<body onload="init()">
</body>
</html>
Sortie
Publish_date = 2000-10-01
Voir aussi
Référence
Référence des types de données XML
Concepts
Utilisation des fonctions d'extension XPath pour la prise en charge de XSD