使用XSLT转换将空白属性替换为XML中的值

时间:2018-01-02 15:18:59

标签: xml xslt xml-parsing xslt-1.0

我在XMl之下,我需要替换root =""具有动态GUID值。

我如何实现这一目标?可以在XML文档中的任何位置。我不知道如何正确发布。 stackoberflow继续发出警告,以便更详细地解释下面的问题然后代码。所以我想这样做。

MSRS14.MyInstance

我从这篇帖子的答案中得到了XSLT。但不知怎的,它不起作用。

            <ClinicalDocument xmlns="urn:hl7-org:v3">
            <templateId root="2.16.840.1.113883.10.20.22.1.2" extension="2015-08-01"/>
            <id root=""/>
            <code code="34133-9" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LN"
            displayName="Summarization of Episode Note"/>
            <title>Patient Summary Document</title>
            <languageCode code="en-US"/>
            <component>
            <structuredBody>
              <component>
                <section>
                  <templateId root="2.16.840.1.113883.10.20.22.2.6.1"/>   
                  <entry typeCode="DRIV">
                    <act classCode="ACT" moodCode="EVN">
                      <templateId root="2.16.840.1.113883.10.20.22.4.30"/>
                      <templateId root="2.16.840.1.113883.10.20.22.4.30" extension="2015-08-01"/>
                      <id nullFlavor="UNK"/>  
                      <informant>
                        <assignedEntity>
                          <id root="2.16.840.1.113883.3.86.3.1" extension="STHS"/>
                          <addr nullFlavor="UNK"/>
                          <telecom nullFlavor="UNK"/>
                          <assignedPerson>
                            <name nullFlavor="UNK"/>
                          </assignedPerson>
                          <representedOrganization>
                            <id root="" extension="STHS" displayable="true"/>
                            <name>STHS</name>
                            <telecom nullFlavor="UNK"/>
                            <addr nullFlavor="UNK"/>
                          </representedOrganization>
                        </assignedEntity>
                      </informant>
                    </act>
                  </entry>
                </section>
              </component>
            </structuredBody>
            </component>
            </ClinicalDocument>

1 个答案:

答案 0 :(得分:1)

<!-- This could be a parm also. -->
<xsl:variable name="GUID" select="'FF1122'"/>

<xsl:template match="id/@root[.='']">
  <xsl:attribute name="root">
    <xsl:value-of select="$GUID"/>
  </xsl:attribute>
</xsl:template>

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>