Это была бы моя первая попытка написать XSLT, который фактически что-то значил, и это помогает мне в моей работе. Я уже написал xpath xpression и добрался с ними очень хорошо, просто нужно, чтобы мои ноги были мокрыми с помощью XSLT, чтобы действительно начать готовить. Anywho,Написание XSLT для вытягивания определенных атрибутов из файла XML
У меня есть XML-файл с определенными узлами в нем с атрибутами value
. Я хочу, чтобы все узлы с name
атрибуты, чтобы распечатать их value
атрибуты в текстовом файле ...
Вот то, что я до сих пор ... Пример XML
<?xml version="1.0"?>
<dataTemplateSpecification>
<templates>
<template>
<elements>
<element id="element0" name="PatientId" display="Patient ID" dataType="String" visable="true" readOnly="false" value="207">
<mapping path="//Template/TemplateData/ACOData/PATIENT_ID" />
<validation>
<rules>
<rule id="r0" test="#element0.value == ''">
<fail>
<html>
<b>Patient ID is null, value must be present</b>
</html>
</fail>
</rule>
</rules>
</validation>
</element>
<element id="element1" name="EncounterId" display="Encounter ID" dataType="String" visable="true" readOnly="false" value="144">
<mapping path="//Template/TemplateData/ACOData/FOCUSED_READMISSIONS_ID" />
<validation>
<rules>
<rule id="r0" test="#element0.value == ''">
<fail>
<html>
<b>Patient ID is null, value must be present</b>
</html>
</fail>
</rule>
</rules>
</validation>
</element>
</template></template></dataTemplateSpecification>
Вот очень простой XSLT, что я написал ...
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="text" indent="yes"/>
<xsl:template match="//dataTemplateSpecification/templates/template/elements/element[@name=*]">
<xsl:copy>
<xsl:apply-templates select="@value"/>
</xsl:copy>
</xsl:template>
Я буду держать растрескивания на это, и если вы, ребята, могли бы помочь на всех, я бы вечно gratefu л. Я, конечно, опубликую решение для любого, кто читает это, а также заинтригован этим вопросом, должен ли я найти решение самостоятельно. Спасибо.
DMainEvent: Не так уж плохо для начала. Вот несколько замечаний: 1. Всегда используйте краткую форму ''. Write: ' ' и * not * ' xsl: value-of>'.2: шаблон соответствия шаблону указывает выражение * relative * XPath (очень редко состоящее из нескольких шагов местоположения). В вашем случае это может быть просто: '' 3. Вы можете использовать одно выражение XPath (и, таким образом, одно значение ''), чтобы указать конкатенацию более чем одна строка: просто используйте функцию 'concat()'. –