Обнаженная теория об XML. DarkSergeant Спецвыпуск Xakep, номер #028, стр. 028-056-4 <xsl:stylesheet> <xsl:template match="//User"> Пользователь </xsl:template> </xsl:stylesheet> Если мы натравим данное XSL-преобразование на исходный документ, то в ответ получим слово «пользователь» в 4 копиях. Понятно, что такое редко кому надо, поэтому в языке XSL есть конструкция, которая позволяет вставлять куски исходного документа. Эта конструкция - <xsl:value-of select="Name"/>, где в атрибуте select опять же задается XPath. Для создания простенького HTML-списка пользователей можно использовать следующий XSL: <xsl:stylesheet> <xsl:template match="//User"> Пользователь <xsl:value-of select="Name"/><br/> </xsl:template> </xsl:stylesheet> После применения этого XSL-я у нас получится красивый список: Пользователь Вася<br/> Пользователь Михаил Петрович<br/> Пользователь Маня<br/> Пользователь Юра<br/> При трансформации XML-документа XSL-процессор (прога, которая выполняет XSL-преобразование) просто бежит по элементам из входного документа и применяет все XSL-шаблоны. В сложных преобразованиях также используются конструкция <xsl:for-each select="//User"></xsl:for-each>, которая для каждого элемента из XPatha, указанного в select, добавляет в выходной документ то, что указано внутри этого элемента. <xsl:stylesheet> <xsl:template match="//User[Role=’раздатчик денег’]"> Босс <xsl:value-of select="Name"/><br/> И его сотрудники:<br/> <xsl:for-each select="//User[Role=’потребитель денег’]"> <xsl:value-of select="Name"/><br/> </xsl:for-each> </xsl:template> </xsl:stylesheet> На выходе получается: Босс Михаил Петрович<br/> И его сотрудники:<br/> Вася<br/> Маня<br/> Юра<br/> Парсеры XML-документов Для того, чтобы поработать с XML-документом - его надо загрузить. Грузить, конечно, можно и руками, но это долго, нудно и противно, тем более, что существует огромное количество уже готовых библиотек, в чем вся и прелесть XML-я. Все библиотеки основаны на одной из трех моделей/подходов: SAX, DOM и XmlReader. Самый простой и мощный из них это DOM, далее идет XmlReader, а замыкает самый запутанный – SAX (недаром у него такое название :)), именно в таком порядке мы и будем их рассматривать. DOM – Документно-Объектная Модель Загрузка XML-файла при использовании библиотеки, основанной на DOM-модели, делается одной функцией xmlDom->Load(“My.xml”). Во время этого вызова библиотека загружает файл полностью в память, причем файл разбирается и по нему строится XML-дерево. Благодаря тому, что было построено дерево, библиотека позволяет не просто гулять по узлам, но и выполнять XPath-запросы. XmlDocument doc = new XmlDocument(); doc.Load("users.xml"); XmlNodeList nameNodes = doc.SelectNodes("//User[Role='программист']/Name"); |