Top Banner
Processing XML/CDA Documents Paul V. Biron, MLIS Kaiser Permanente, So Cal Medical Group Pasadena, CA Co-Chair HL7 XML SIG Co-Chair HL7 Structured Document TC HL7 Fall Plenary Meeting Sept 14, 2000 XSL(T), DOM and SAX
73

Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

May 24, 2018

Download

Documents

truongque
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

ProcessingXML/CDA Documents

Paul V. Biron, MLISKaiser Permanente, So Cal Medical Group

Pasadena, CA

Co-Chair HL7 XML SIGCo-Chair HL7 Structured Document TC

HL7 Fall Plenary MeetingSept 14, 2000

XSL(T), DOM and SAX

Page 2: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

2

Intro

• Extensible Stylesheet Language (XSL)– XSL Transformation Language (XSLT)

– XML Path Language (XPath)

– CDA Transformation Issues

• Document Object Model (DOM)

• Simple API for XML (SAX)

• Namespaces in XML [optional]

Page 3: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

Extensible Stylesheet Language

Page 4: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

4

XSL

• Alphabet Soup– XSL - Exstensible Stylesheet Language– XSLT - XSL Transformation Language– XPath - XML Path Language

• XSL can be used to:– Generate XHTML

– Generate other XML

– Generate the XSL formatting language as ahierarchical sequence of formatting objects

• images, text lines, paragraph blocks ,etc.

Page 5: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

5

XSL: Generate XHTML

XSLT transformation

XSLstylesheet

XMLdoc-

ument

XHTMLdoc-

ument

Page 6: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

6

XSL: XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match=’pattern’>{action}

</xsl:template>

<xsl:template match=’pattern’>{action}

</xsl:template></xsl:stylesheet>

XSL Document

Page 7: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

7

XSL: Formatting Objects (FOs)

• Pagination and Layout Formatting Objects

• Block Formatting Objects

• Inline Formatting Objects

• Formatting Objects for Tables

• Formatting Objects for Lists

• Link and Multi Formatting Objects

• Out-of-Line Formatting Objects

Page 8: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

8

XSL: Generate Formatting Objects

XSLT transformation

XSL formattingengine

Consists of the tags andattributes which representspecifications for the XSLformating engine

Output to display,printer, Postscript, etc.

XSLstylesheet

XMLdoc-

ument

XSLFOs

Page 9: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

9

Radiology Report

Patient Information• Name: Henry Levin, the 7th• MRN: 123456789• SEX: Male• DOB: May 13, 1923

Procedure : Chest X-RayDate: November 07, 1999

Clinical DataHistory of smoking for 40 years.

FindingsRLL nodule.

ImpressionsRLL nodule, suggestive of malignancy.Compared with a prior CXR from 6 monthsago, nodule size has increased.

RecommendationsI notified the ordering physician of this findingby phone.

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN>123456789</MRN> <SEX>Male</SEX> <DOB>May 13, 1923</DOB> <PROCEDURE>Chest X-Ray <ID code="P5-20100" system="SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

Locally applied markup

Transformation Use-cases

Page 10: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

10

<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> < SEX>Male</ SEX> < DOB>May 13, 1923</ DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

Locally applied markup CDA markup

Element Sequence

Note: CDA markup not currentper the membership ballot

Page 11: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

11

Locally applied markup CDA markup

Element vs. Attribute<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX>Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

Page 12: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

12

Locally applied markup

Required Element<levelone> <clinical_document_header> <id V="N3" AA="2.16.840.1.1138.933"/> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 13: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

13

Locally applied markup

Vocabulary Domains<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> < SEX>Male</ SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 14: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

14

Locally applied markup

Different (lexical) Datatypes<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> < DOB>May 13, 1923</ DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 15: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

15

Locally applied markup

Different Definitions<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE>Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 16: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

16

XSLT

• stylesheet is a sequence of templates– template can be thought of as rules

• each template has 2 parts– match pattern

• determines which element/attribute/etc. nodes thetemplate applies to

– template body• a combination of explicit markup and XSLT

commands

• determines the transformation that will beperformed on the nodes matched by pattern

Page 17: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

17

XSLT: Processing Model

• Set the current node to the documentnode

• find patterns that match– choose the "best" pattern

– apply the template• typically selects one or more additional nodes to

process

– appending result to the output tree

• Recurse until no new nodes are selected

Page 18: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

18

Match an element name

<xsl:template match="section">{action}

</xsl:template>

XPath: Simple Patterns

Page 19: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

19

<xsl:template match="body|caption|content">{action}

</xsl:template>

XPath: Simple Patterns

Match any one of many elementnames

Page 20: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

20

XPath: Simple Patterns

Match an attribute name

<xsl:template match="@ignore">{action}

</xsl:template>

Page 21: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

21

XPath: Complex Patterns

Match a "path"

<xsl:template match="section/section/paragraph">{action}

</xsl:template>

Page 22: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

22

XPath: Complex Patterns

Match a predicate

<xsl:template match="observation_media.value [@MD=’image/gif’ or @MD=’image/jpeg]">

{action}</xsl:template>

Page 23: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

23

XPath: Misc PatternsMatch the context node

<xsl:template match=".">{action}

</xsl:template>

Match the parent node

<xsl:template match="..">{action}

</xsl:template>

Page 24: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

24

XPath: Misc PatternsMatch any element

<xsl:template match="*">{action}

</xsl:template>

Match any attribute

<xsl:template match="@*">{action}

</xsl:template>

Page 25: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

25

XPath: Misc Patterns

Match a node type

<xsl:template match="text()">{action}

</xsl:template>

<xsl:template match="comment()">{action}

</xsl:template>

Page 26: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

26

XSLT: Built-In Templates

<xsl:template match="*|/"><xsl:apply-templates/>

</xsl:template>

<xsl:template match="text()|@*"><xsl:value-of select="."/>

</xsl:template>

<xsl:template match="processing-instruction()|comment()"/></xsl:template>

Page 27: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

27

XSLT: Commands (Actions)

<xsl:apply-templates/>

<xsl:apply-templates select=’pattern’/>

apply-templates

Page 28: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

28

XSLT: Commands (Actions)

Conditionals: if

<xsl:if test=’predicate’>{action}

</xsl:if>

Page 29: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

29

XSLT: Commands (Actions)Conditionals: choose (if/then/else)

<xsl:choose><xsl:when test=’predicate’>

{action}<xsl:/when><xsl:when test=’predicate’>

{action}</xsl:when><xsl:otherwise>

{action}</xsl:otherwise>

</xsl:choose>

Page 30: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

30

XSLT: Commands (Actions)

Repetition: for-each

<xsl:for-each select=’pattern’>{action}

</xsl:for-each>

Page 31: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

31

XSLT: Commands (Actions)

Sorting

<xsl:for-each select=’pattern’><xsl:sort order=’ascending|descending’/>

</xsl:for-each>

Page 32: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

32

XSLT: Commands (Actions)

Getting an element’s content or anattribute’s value

<xsl:value-of select=’pattern’/>

Page 33: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

33

XSLT: Commands (Actions)

<xsl:variable name=’name’ select=’pattern’/>

<xsl:value-of select=’$name’/>

Setting a variable

Getting a variable’s value

<xsl:apply-templates select=’pattern-with-$variable’/>

Page 34: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

34

<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> < SEX>Male</ SEX> < DOB>May 13, 1923</ DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

Locally applied markup

Element SequenceCDA markup

Page 35: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

35

<xsl:template match=’Header’> ... <xsl:apply-templates select=’DOB’/> <xsl:apply-templates select=’SEX’/> ...</xsl:template>

Element Sequence

Page 36: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

36

Locally applied markup

Element vs. Attribute<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX>Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

Page 37: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

37

<xsl:template match=’SEX’> <administrative_gender_cd> <xsl:attribute name=’V’> <xsl:choose> <xsl:when test=’text()="Male"’>M</xsl:when> <xsl:when test=’text()="Female"’>F</xsl:when> </xsl:choose> </xsl:attribute> </administrative_gender_cd></xsl:template>

Element vs. Attribute

Page 38: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

38

Locally applied markup

Required Element<levelone> <clinical_document_header> <id V="a123" AA="2.16.840.1.1138.933"/> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 39: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

39

<xsl:template match=’Header’> ... <id AA=’2.16.840.1.1138.933’> <xsl:attribute name=’V’>

<xsl:value-of select=’generate-id()’/> </xsl:attribute> </id> ...</xsl:template>

Required Element

Page 40: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

40

Locally applied markup

Vocabulary Domains<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> < SEX>Male</ SEX> <DOB> May 13, 1923</DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 41: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

41

<xsl:template match=’SEX’> <administrative_gender_cd> <xsl:attribute name=’V’> <xsl:choose> <xsl:when test=’text()="Male"’>M</xsl:when> <xsl:when test=’text()="Female"’>F</xsl:when> </xsl:choose> </xsl:attribute> </administrative_gender_cd></xsl:template>

Vocabulary Domains

Page 42: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

42

Locally applied markup

Different (lexical) Datatypes<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> < DOB>May 13, 1923</ DOB> <PROCEDURE> Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 43: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

43

Different (lexical) Datatypes

<xsl:template match=’DOB’> <birth_dttm> <xsl:attribute name=’V’> <xsl:call-template name=’format-date’> <xsl:with-param name=’date’> <xsl:value-of select=’text()’/> </xsl:with-param> </xsl:call-template> </xsl:attribute> </birth_dttm></xsl:template>

Page 44: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

44

Locally applied markup

Different Definitions<levelone> <clinical_document_header> <clinical_document_header.service_cd V="P5-20100" PN="Chest X-Ray" S="2.16.840.1.113883.6.1"/> <patient_encounter> <encounter_tmr LOW="19991107"/> </patient_encounter> <patient> <patient.type_cd V="PAT"/> <person> <id V="123456789" AA="2.16.840.113.933"/> <person_name> <nm><G V="Henry"/> <F V="Levin"/> <SF V="the 7th"/></nm> <person_name.type_cd V="L"/> </person_name> </person> <birth_dttm V="19320513"/> <administrative_gender_cd V="M"/> </patient> </clinical_document_header> <body> … </body></levelone>

<RadiologyReport> <Header> <Name> Henry Levin, the 7th </Name> <MRN> 123456789</MRN> <SEX> Male</SEX> <DOB> May 13, 1923</DOB> <PROCEDURE>Chest X-Ray <ID code=" P5-20100" system=" SNOMED"/> <DATE> November 07, 1999 </DATE> </PROCEDURE> </Header> <Body> … </Body></RadiologyReport>

CDA markup

Page 45: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

45

Different Definitions<xsl:template match=’PROCEDURE’> <clinical_document_header.service_cd> <xsl:attribute name=’V’> <xsl:value-of select=’ID/@code’/> </xsl:attribute> <xsl:attribute name=’PN’> <xsl:value-of select=’text()’/> </xsl:attribute> <xsl:attribute name=’S’> <xsl:call-template name=’map-code-system’> <xsl:with-param name=’system’ select=’ID/@system’/> </xsl:call-template> </xsl:attribute> </clinical_document_header.service_cd></xsl:template>

Page 46: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

Document Object Model

Page 47: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

47

What is the DOM?

• Document Object Model (DOM)– Tree-based API

• Represents a parsed document as tree of typednodes

– element, attribute, characterData, etc.

• Processing consists of traversing the tree andperforming operations on the nodes

• W3C Recommendation– Current version: Level 1

• Level 2 in "candidate recommendation" stage now

Page 48: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

48

<?xml version="1.0"?><hello level="0">

<world>goodbye</world><hello level="1">

<world>goodbye</world></hello>

</hello>

Tree-based APIs

Level=0Level=0hellohello

worldworld hellohello

worldworld

Level=1Level=1

goodbyegoodbye

goodbyegoodbye

elementselements

attrsattrs

charDatacharData

Page 49: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

49

Hello World, DOM-styleimport org.w3c.dom.* ; import org.xml.sax.* ;import com.ibm.xml.parsers.DOMParser ; import java.io.* ;public class HelloWorld{

public static void main (String[] args){

Document domTree = createDOMTree (args[0]) ;traverseDOMTree (domTree.getDocumentElement (), 0) ;

}static void traverseDOMTree (Node node, int indent){

for (int i = 0 ; i < indent ; i++) {System.out.print ("\t") ;}

System.out.println(node.getNodeName() + ":" + node.getNodeValue()) ;

if (node.hasChildNodes ()) {NodeList nl = node.getChildNodes () ;for (int i = 0 ; i < nl.getLength () ; i++) {

traverseDOMTree (nl.item (i), indent + 1) ;}

}}static Document createDOMTree (String xmlFile) {…}

}

Page 50: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

50

Hello World, DOM-Style

c:\>type helloworld.xml<?xml version="1.0"?><hello>

<world>goodbye</world></hello>

c:\>java HelloWorld helloworld.xmlhello:null

#text:\n\tworld:null

#text:goodbye#text:\n

Page 51: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

51

Node Types

• Document

• Element

• Attr

• Comment

• Text

• CDATASection

• DocumentType

• EntityReference

• Entity

• DocumentFragment

• Notation

• ProcessingInstruction

Page 52: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

52

DOM: Fundamental Interfaces

• Attr

• CharacterData

• Document

• Element

• Node

• Text

• NodeList

Page 53: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

53

MethodsMethodsNode Interface

• getAttributes

• getChildNodes

• getFirstChild

• getLastChild

• getNextSibling

• getOwnerDocument

• getNodeName

• getNodeType

• getNodeValue

• getParentNode

• getPreviousSibling

• hasChildNodes

• appendChild

• cloneNode

• insertBefore

• removeChild

• replaceChild

• setNodeValue

Page 54: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

54

MethodsMethods

Element Interface

• getAttributeNode

• setAttributeNode

• removeAttributeNode

• normalize

• getTagName

• getAttribute

• setAttribute

• removeAttribute

• getElementsByTagName

Page 55: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

55

MethodsMethods

Attr Interface

• getValue

• setValue

• getName

• getSpecified

Page 56: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

56

Get an attribute

import org.w3c.dom.* ; import org.xml.sax.* ;import com.ibm.xml.parsers.DOMParser ; import java.io.* ;public class HelloWorld{

public static void main (String[] args){

Document domTree = createDOMTree (args[0]) ;String sex = getPatientSex (domTree.getDocumentElement ()) ;

System.out.println ("sex is " + sex) ;}public static String getPatientSex (Document doc){

NodeList nl = doc.getElementsByTagName("administrative_gender_cd") ;

Element sex = (Element) nl.item (0) ;Attr value = sex.getAttributeNode ("V") ;

return (value.getValue ()) ;}static Document createDOMTree (String xmlFile) {…}

}

Page 57: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

Simple API for XML (SAX)

Page 58: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

58

What is SAX?

• Simple API for XML (SAX)– Event-based API

• Represent a parsed document as a sequence ofparse events

– startElement, characterData, endElement, etc.

• Processing consists of dispatching events from anevent queue or handling callbacks registered foreach event

• NOT a W3C Recommendation– a "de-facto" standard

– originally designed by David Megginson

– design continues on XML-DEV mailing list

Page 59: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

59

Hello World, SAX-Style

import org.xml.sax.* ; import org.xml.sax.helpers.* ;import java.io.* ;public class HelloWorldSAXHelper extends HandlerBase{// this helper class should be instantiated by a static main() somewhere// the following methods implement the SAX DocumentHandler interface

public void startElement (String name, AttributeList atts){

System.out.println ("startElement: " + name) ;}public void characters (char c[], int x, int y){

System.out.println ("characters: " + new String (c, x, y)) ;}public void endElement (String name){

System.out.println ("endElement: " + name) ;}public void ignorableWhitespace (char c[], int x, int y){

System.out.println("ignorableWhitespace: "+ new String(c, x, y));}

}

Page 60: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

60

Hello World, SAX-Stylec:\>type helloworld.xml<?xml version="1.0"?><hello>

<world>goodbye</world></hello>

c:\>java HelloWorldSAX helloworld.xmlstartElement: helloignorableWhitespace:\n\tstartElement: worldcharacters: goodbyeendElement: worldignorableWhitespace:\nendElement: hello

Page 61: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

61

Application WritersApplication Writers Parser WritersParser Writers

Interfaces

• DocumentHandler

• ErrorHandler

• DTDHandler

• EntityResolver

• Parser

• AttributeList

• Locator

Page 62: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

62

MethodsMethods

DocumentHandler Interface

• startDocument

• startElement

• characters

• endElement

• endDocument

• ignorableWhitespace

• setDocumentLocator

• processingInstruction

Page 63: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

63

MethodsMethods

Parser Interface

• parse

• setDocumentHandler

• setDTDHandler

• setEntityResolver

• setErrorHandler

• setLocale

Page 64: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

64

MethodsMethods

AttributeList Interface

• getLength

• getName

• getType

• getValue

Page 65: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

65

Outro

• Extensible Stylesheet Language (XSL)– XSL Transformation Language (XSLT)

– XML Path Language (XPath)

• Document Object Model (DOM)

• Simple API for XML (SAX)

• Namespaces in XML [optional]

Page 66: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

Namespaces in XML

Page 67: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

67

Namespaces in XML

• An XML namespace is a collection ofnames, identified by a URI reference,which are used in XML documents aselement types and attribute names

• Names from XML namespaces appear asqualified names, which contain a singlecolon, separating the name into anamespace prefix and a local part

• The prefix, which is mapped to a URIreference, selects a namespace.

Page 68: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

68

Namespace Declarations

<!ELEMENT NAME (First, Middle?, Last, Suffix?)><!ELEMENT Name xmlns CDATA #IMPLIED>

<RadiologyReport> <PatientInfo> <Name xmlns="http://www.radiology.org/report"> <First>Amy</First> <Middle>A.</Middle> <Last>Fall</Last> </Name> … </PatientInfo> ….</RadiologyReport>

XML Document

Default NamespaceThe namespace name in the attribute value is that of the default namespace inthe scope of the element to which the declaration is attached. In such a defaultdeclaration, the attribute value may be empty.

Page 69: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

69

Namespace Declarations

<!ELEMENT NAME (First, Middle?, Last, Suffix?)><!ELEMENT Name xmlns:radorg CDATA #IMPLIED>

<RadiologyReport> <PatientInfo> <Name xmlns:radorg="http://www.radiology.org/report"> <First>Amy</First> <Middle>A.</Middle> <Last>Fall</Last> </Name> … </PatientInfo> ….</RadiologyReport>

XML Document

Namespace PrefixThe local part gives the namespace prefix, used to associate element andattribute names with the namespace name in the attribute value in the scope ofthe element to which the declaration is attached.

Page 70: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

70

Qualified NamesStart tag Content End tag

<<radorgradorg:Name> :Name> Female </</radorgradorg:Name>:Name>

Namespace qualified element name

Start tag Attribute Content End tag

<patient.sex hl7:table=<patient.sex hl7:table=“HL70001“HL70001”>> Female</ patient.sex></ patient.sex>

Namespace qualified attribute

Page 71: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

71

Qualified Names

<!ELEMENT NAME (First, Middle?, Last, Suffix?)><!ELEMENT Name xmlns:radorg CDATA #IMPLIED>

<RadiologyReport> <PatientInfo> <radorg:Name xmlns:radorg="http://www.radiology.org/report"> <First>Amy</First> <Middle>A.</Middle> <Last>Fall</Last> </radorg:Name> … </PatientInfo> ….</RadiologyReport>

XML Document

Namespace PrefixThe local part gives the namespace prefix, used to associate element andattribute names with the namespace name in the attribute value in the scope ofthe element to which the declaration is attached.

Page 72: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

72

References• XSL

– W3C. Extensible Stylesheet Language (XSL).W3C Working Draft.

– http://www.w3.org/TR/WD-xsl

• XPath– W3C. XML Path Language. W3C

Recommendation.– http://www.w3.org/TR/xpath

• XSLT– W3C. XSL Transformations (XSLT). W3C

Recommendation.– http://www.w3.org/TR/xslt

Page 73: Processing XML/CDA Documents - Health Level … Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL 4 XSL • Alphabet Soup – XSL - Exstensible Stylesheet Language –

2000-05-22 Paul V. Biron, Processing XML/PRA Documents: DOM, SAX and XSL

73

References• DOM

– W3C. Document Object Model (DOM)Level 1 Specification. W3C Recommendation.

– http://www.w3.org/TR/REC-DOM-Level-1

• SAX– XML-DEV. Simple API for XML (SAX). De-

facto Standard.– http://www.megginson.com/SAX

• XML Names– W3C. Namespaces in XML. W3C

Recommendation.– http://www.w3.org/TR/REC-xml-names