XMLI Structure of XML Data Structure of XML Data XML Document Schema XML Document Schema XPATH XPATH.

Slides:



Advertisements
Similar presentations
XML Examples. Bank Information Basic structure: A-101 Downtown 500 … Johnson Alma Surrey … A-101 Johnson …
Advertisements

An Introduction to XML Based on the W3C XML Recommendations.
1 DTD (Document Type Definition) Imposing Structure on XML Documents (W3Schools on DTDs)W3Schools on DTDs.
CS 898N – Advanced World Wide Web Technologies Lecture 21: XML Chin-Chih Chang
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
Database System Concepts ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 10: XML.
1 COS 425: Database and Information Management Systems XML and information exchange.
L13-S1 XML 2003 SJSU -- CmpE Database Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San José State.
Introduction to XML This material is based heavily on the tutorial by the same name at
1 Advanced Topics XML and Databases. 2 XML u Overview u Structure of XML Data –XML Document Type Definition DTD –Namespaces –XML Schema u Query and Transformation.
XML Databases and introducing their languages, XQuery, XSLT, and XPath
4/20/2017.
XP New Perspectives on XML Tutorial 4 1 XML Schema Tutorial – Carey ISBN Working with Namespaces and Schemas.
XML Anisha K J Jerrin Thomas. Outline  Introduction  Structure of an XML Page  Well-formed & Valid XML Documents  DTD – Elements, Attributes, Entities.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
Lecture 7 of Advanced Databases XML Querying & Transformation Instructor: Mr.Ahmed Al Astal.
 Structure of XML Data  XML Document Schema  Querying and Transformation  Application Program Interfaces to XML  Storage of XML Data  XML Applications.
Introduction to XML cs3505. References –I got most of this presentation from this site –O’reilly tutorials.
Lecture 6 of Advanced Databases XML Schema, Querying & Transformation Instructor: Mr.Ahmed Al Astal.
©Silberschatz, Korth and Sudarshan10.1Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium (W3C) Originally.
XML By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany) DIRECTOR ARUNAI ENGINEERING COLLEGE TIRUVANNAMALAI.
Chapter 10: XML.
Lecture 6 of Advanced Databases XML Querying & Transformation Instructor: Mr.Eyad Almassri.
Computing & Information Sciences Kansas State University Friday, 17 Oct 2007CIS 560: Database System Concepts Lecture 21 of 42 Friday, 17 October 2008.
Chapter 10: XML XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data.
CISC 3140 (CIS 20.2) Design & Implementation of Software Application II Instructor : M. Meyer Address: Course Page:
Processing of structured documents Spring 2002, Part 2 Helena Ahonen-Myka.
XML. 2 XML- Some Links XML Tutorials – Some Links me=htmlhttp://
1 Tutorial 13 Validating Documents with DTDs Working with Document Type Definitions.
1 Chapter 10: XML What is XML What is XML Basic Components of XML Basic Components of XML XPath XPath XQuery XQuery.
Computing & Information Sciences Kansas State University Thursday, 15 Mar 2007CIS 560: Database System Concepts Lecture 24 of 42 Thursday, 15 March 2007.
Chapter 10: XML The world of XML. Context The dawn of database technology 70s A DBMS is a flexible store-recall system for digital information It provides.
Introduction to XML This presentation covers introductory features of XML. What XML is and what it is not? What does it do? Put different related technologies.
Temple University – CIS Dept. CIS616– Principles of Data Management V. Megalooikonomou XML ( based on slides by Silberschatz, Korth and Sudarshan at Bell.
Lecture 16 Introduction to XML Boriana Koleva Room: C54
XML Name: Niki Sardjono Class: CS 157A Instructor : Prof. S. M. Lee.
Chapter 27 The World Wide Web and XML. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.27-2 Topics in this Chapter The Web and the Internet.
Jeff Ullman: Introduction to XML 1 XML Semistructured Data Extensible Markup Language Document Type Definitions.
XML Introduction. What is XML? XML stands for eXtensible Markup Language XML stands for eXtensible Markup Language XML is a markup language much like.
Chapter 23 XML. 2 Introduction  XML: eXtensible Markup Language (What is a Markup language?)  Defined by the WWW Consortium (W3C)  Originally intended.
1 XML eXtensible Markup Language. 2 XML vs. HTML HTML is a HyperText Markup language HTML is a HyperText Markup language Designed for a specific application,
The Semistructured-Data Model Programming Languages for XML Spring 2011 Instructor: Hassan Khosravi.
Database System Concepts Bin Mu at Tongji University Chapter 10: XML.
CIS750 – Seminar in Advanced Topics in Computer Science Advanced topics in databases – Multimedia Databases V. Megalooikonomou XML ( based on slides by.
1. XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data XML Applications.
ADT 2010 Introduction to XML, XPath (& XQuery) Chapter 10 in Silberschatz, Korth, Sudarshan “Database System Concepts” Stefan Manegold
Computing & Information Sciences Kansas State University Friday, 20 Oct 2006CIS 560: Database System Concepts Lecture 24 of 42 Friday, 20 October 2006.
Introduction to DTD A Document Type Definition (DTD) defines the legal building blocks of an XML document. It defines the document structure with a list.
XML CSC1310 Fall HTML (TIM BERNERS-LEE) HyperText Markup Language  HTML (HyperText Markup Language): December  Markup  Markup is a symbol.
Database System Concepts ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 10: XML.
Chapter 10: XML. XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data XML.
Chapter 8: XML. 2 XML Structure of XML Data XML Document Schema Querying and Transformation Application Program Interfaces to XML Storage of XML Data.
Database System Concepts ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 10: XML.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
Chapter 10: XML. ©Silberschatz, Korth and Sudarshan10.2Database System ConceptsIntroduction XML: Extensible Markup Language Defined by the WWW Consortium.
 XML derives its strength from a variety of supporting technologies.  Structure and data types: When using XML to exchange data among clients, partners,
L14-S1 XML 2003 SJSU -- CmpE Database Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College of Engineering San José State.
Chapter 10: XML Introduction  XML: Extensible Markup Language  Defined by the WWW Consortium (W3C)  Originally intended as a document.
1 XML eXtensible Markup Language. 2 Introduction and Motivation Dr. Praveen Madiraju Modified from Dr.Sagiv’s slides.
10.1 Chapter 10: XML Sections Problems 10.1, 10.2, 10.7 Find an example of using XML in a field of interest to you and describe it to the class.
Database System Concepts ©Silberschatz, Korth and Sudarshan See for conditions on re-usewww.db-book.com Chapter 10: XML.
CS 480: Database Systems Lecture 26 March 18, 2013.
CS 480: Database Systems Lecture 25 March 15, 2013.
Querying and Transforming XML Data
XML By Dr.S.Sridhar, Ph.D.(JNUD), RACI(Paris, NICE), RMR(USA), RZFM(Germany)
Chapter 23: XML Database System concepts,6th Ed.
XML and Databases.
Lecture 5- Semi-Structured Data (XML, JSON)
Semi-Structured Data (XML, JSON)
XML: Extensible Markup Language
Presentation transcript:

XMLI Structure of XML Data Structure of XML Data XML Document Schema XML Document Schema XPATH XPATH

Introduction XML: Extensible Markup Language XML: Extensible Markup Language Defined by the WWW Consortium (W3C) Defined by the WWW Consortium (W3C) Derived from SGML (Standard Generalized Markup Language), but simpler to use than SGML Derived from SGML (Standard Generalized Markup Language), but simpler to use than SGML Documents have tags giving extra information about sections of the document Documents have tags giving extra information about sections of the document E.g. XML Introduction … E.g. XML Introduction … Extensible, unlike HTML Extensible, unlike HTML Users can add new tags, and separately specify how the tag should be handled for display Users can add new tags, and separately specify how the tag should be handled for display

XML Introduction (Cont.) The ability to specify new tags, and to create nested tag structures make XML a great way to exchange data, not just documents. The ability to specify new tags, and to create nested tag structures make XML a great way to exchange data, not just documents. Much of the use of XML has been in data exchange applications, not as a replacement for HTML Much of the use of XML has been in data exchange applications, not as a replacement for HTML Tags make data (relatively) self-documenting Tags make data (relatively) self-documenting E.g. E.g. A-101 A-101 Downtown Downtown A-101 A-101 Johnson Johnson

XML: Motivation Data interchange is critical in today’s networked world Data interchange is critical in today’s networked world Examples: Examples: Banking: funds transfer Banking: funds transfer Order processing (especially inter-company orders) Order processing (especially inter-company orders) Scientific data Scientific data Chemistry: ChemML, … Chemistry: ChemML, … Genetics: BSML (Bio-Sequence Markup Language), … Genetics: BSML (Bio-Sequence Markup Language), … Paper flow of information between organizations is being replaced by electronic flow of information Paper flow of information between organizations is being replaced by electronic flow of information Each application area has its own set of standards for representing information Each application area has its own set of standards for representing information XML has become the basis for all new generation data interchange formats XML has become the basis for all new generation data interchange formats

XML Motivation (Cont.) Earlier generation formats were based on plain text with line headers indicating the meaning of fields Earlier generation formats were based on plain text with line headers indicating the meaning of fields Similar in concept to headers Similar in concept to headers Does not allow for nested structures, no standard “type” language Does not allow for nested structures, no standard “type” language Tied too closely to low level document structure (lines, spaces, etc) Tied too closely to low level document structure (lines, spaces, etc) Each XML based standard defines what are valid elements, using Each XML based standard defines what are valid elements, using XML type specification languages to specify the syntax XML type specification languages to specify the syntax DTD (Document Type Definition) DTD (Document Type Definition) XML Schema XML Schema Plus textual descriptions of the semantics Plus textual descriptions of the semantics XML allows new tags to be defined as required XML allows new tags to be defined as required However, this may be constrained by DTDs However, this may be constrained by DTDs A wide variety of tools is available for parsing, browsing and querying XML documents/data A wide variety of tools is available for parsing, browsing and querying XML documents/data

Comparison with Relational Data Inefficient: tags, which in effect represent schema information, are repeated Inefficient: tags, which in effect represent schema information, are repeated Better than relational tuples as a data-exchange format Better than relational tuples as a data-exchange format Unlike relational tuples, XML data is self-documenting due to presence of tags Unlike relational tuples, XML data is self-documenting due to presence of tags Non-rigid format: tags can be added Non-rigid format: tags can be added Allows nested structures Allows nested structures Wide acceptance, not only in database systems, but also in browsers, tools, and applications Wide acceptance, not only in database systems, but also in browsers, tools, and applications

Structure of XML Data Tag: label for a section of data Tag: label for a section of data Element: section of data beginning with and ending with matching Element: section of data beginning with and ending with matching Elements must be properly nested Elements must be properly nested Proper nesting Proper nesting … …. … …. Improper nesting Improper nesting … …. … …. Formally: every start tag must have a unique matching end tag, that is in the context of the same parent element. Formally: every start tag must have a unique matching end tag, that is in the context of the same parent element. Every document must have a single top-level element Every document must have a single top-level element

Example of Nested Elements Hayes Hayes Main Main Harrison Harrison A-102 A-102 Perryridge Perryridge …....

Motivation for Nesting Nesting of data is useful in data transfer Nesting of data is useful in data transfer Example: elements representing customer_id, customer_name, and address nested within an order element Example: elements representing customer_id, customer_name, and address nested within an order element Nesting is not supported, or discouraged, in relational databases Nesting is not supported, or discouraged, in relational databases With multiple orders, customer name and address are stored redundantly With multiple orders, customer name and address are stored redundantly normalization replaces nested structures in each order by foreign key into table storing customer name and address information normalization replaces nested structures in each order by foreign key into table storing customer name and address information Nesting is supported in object-relational databases Nesting is supported in object-relational databases But nesting is appropriate when transferring data But nesting is appropriate when transferring data External application does not have direct access to data referenced by a foreign key External application does not have direct access to data referenced by a foreign key

Structure of XML Data (Cont.) Mixture of text with sub-elements is legal in XML. Mixture of text with sub-elements is legal in XML. Example: Example: This account is seldom used any more. This account is seldom used any more. A-102 A-102 Perryridge Perryridge Useful for document markup, but discouraged for data representation Useful for document markup, but discouraged for data representation

Attributes Elements can have attributes Elements can have attributes A-102 A-102 Perryridge Perryridge Attributes are specified by name=value pairs inside the starting tag of an element Attributes are specified by name=value pairs inside the starting tag of an element An element may have several attributes, but each attribute name can only occur once An element may have several attributes, but each attribute name can only occur once

Attributes vs. Subelements Distinction between subelement and attribute Distinction between subelement and attribute In the context of documents, attributes are part of markup, while subelement contents are part of the basic document contents In the context of documents, attributes are part of markup, while subelement contents are part of the basic document contents In the context of data representation, the difference is unclear and may be confusing In the context of data representation, the difference is unclear and may be confusing Same information can be represented in two ways Same information can be represented in two ways …. …. A-101 … A-101 … Suggestion: use attributes for identifiers of elements, and use subelements for contents Suggestion: use attributes for identifiers of elements, and use subelements for contents

Namespaces XML data has to be exchanged between organizations XML data has to be exchanged between organizations Same tag name may have different meaning in different organizations, causing confusion on exchanged documents Same tag name may have different meaning in different organizations, causing confusion on exchanged documents Specifying a unique string as an element name avoids confusion Specifying a unique string as an element name avoids confusion Better solution: use unique-name:element-name Better solution: use unique-name:element-name Avoid using long unique names all over document by using XML Namespaces Avoid using long unique names all over document by using XML Namespaces … … Downtown Downtown Brooklyn Brooklyn … …</bank>

More on XML Syntax Elements without subelements or text content can be abbreviated by ending the start tag with a /> and deleting the end tag Elements without subelements or text content can be abbreviated by ending the start tag with a /> and deleting the end tag To store string data that may contain tags, without the tags being interpreted as subelements, use CDATA as below To store string data that may contain tags, without the tags being interpreted as subelements, use CDATA as below … ]]> … ]]> Here, and are treated as just strings CDATA stands for “character data”

XML Document Schema Database schemas constrain what information can be stored, and the data types of stored values Database schemas constrain what information can be stored, and the data types of stored values XML documents are not required to have an associated schema XML documents are not required to have an associated schema However, schemas are very important for XML data exchange However, schemas are very important for XML data exchange Otherwise, a site cannot automatically interpret data received from another site Otherwise, a site cannot automatically interpret data received from another site Two mechanisms for specifying XML schema Two mechanisms for specifying XML schema Document Type Definition (DTD) Document Type Definition (DTD) Widely used Widely used XML Schema XML Schema Newer, increasing use Newer, increasing use

Document Type Definition (DTD) The type of an XML document can be specified using a DTD The type of an XML document can be specified using a DTD DTD constraints structure of XML data DTD constraints structure of XML data What elements can occur What elements can occur What attributes can/must an element have What attributes can/must an element have What subelements can/must occur inside each element, and how many times. What subelements can/must occur inside each element, and how many times. DTD does not constrain data types DTD does not constrain data types All values represented as strings in XML All values represented as strings in XML DTD syntax DTD syntax

Element Specification in DTD Subelements can be specified as Subelements can be specified as names of elements, or names of elements, or #PCDATA (parsed character data), i.e., character strings #PCDATA (parsed character data), i.e., character strings EMPTY (no subelements) or ANY (anything can be a subelement) EMPTY (no subelements) or ANY (anything can be a subelement) Example Example Subelement specification may have regular expressions Subelement specification may have regular expressions Notation: Notation: “|” - alternatives “|” - alternatives “+” - 1 or more occurrences “+” - 1 or more occurrences “*” - 0 or more occurrences “*” - 0 or more occurrences

Bank DTD <!DOCTYPE bank [ ]>

Attribute Specification in DTD Attribute specification : for each attribute Attribute specification : for each attribute Name Name Type of attribute Type of attribute CDATA CDATA ID (identifier) or IDREF (ID reference) or IDREFS (multiple IDREFs) ID (identifier) or IDREF (ID reference) or IDREFS (multiple IDREFs) more on this later more on this later Whether Whether mandatory (#REQUIRED) mandatory (#REQUIRED) has a default value (value), has a default value (value), or neither (#IMPLIED) or neither (#IMPLIED) Examples Examples <!ATTLIST customer <!ATTLIST customer customer_id ID # REQUIRED accounts IDREFS # REQUIRED >

IDs and IDREFs An element can have at most one attribute of type ID An element can have at most one attribute of type ID The ID attribute value of each element in an XML document must be distinct The ID attribute value of each element in an XML document must be distinct Thus the ID attribute value is an object identifier Thus the ID attribute value is an object identifier An attribute of type IDREF must contain the ID value of an element in the same document An attribute of type IDREF must contain the ID value of an element in the same document An attribute of type IDREFS contains a set of (0 or more) ID values. Each ID value must contain the ID value of an element in the same document An attribute of type IDREFS contains a set of (0 or more) ID values. Each ID value must contain the ID value of an element in the same document

Bank DTD with Attributes Bank DTD with ID and IDREF attribute types. Bank DTD with ID and IDREF attribute types. <!DOCTYPE bank-2[ <!DOCTYPE bank-2[ <!ATTLIST account <!ATTLIST account account_number ID # REQUIRED account_number ID # REQUIRED owners IDREFS # REQUIRED> owners IDREFS # REQUIRED> <!ELEMENT customer(customer_name, customer_street, <!ELEMENT customer(customer_name, customer_street, customer_city)> customer_city)> <!ATTLIST customer <!ATTLIST customer customer_id ID # REQUIRED customer_id ID # REQUIRED accounts IDREFS # REQUIRED> accounts IDREFS # REQUIRED> … declarations for branch, balance, customer_name, customer_street and customer_city ]> … declarations for branch, balance, customer_name, customer_street and customer_city ]>

XML data with ID and IDREF attributes <bank-2> Downtown Downtown </account> Joe Joe Monroe Monroe Madison Madison </customer> Mary Mary Erin Erin Newark Newark </customer></bank-2>

Limitations of DTDs No typing of text elements and attributes No typing of text elements and attributes All values are strings, no integers, reals, etc. All values are strings, no integers, reals, etc. Difficult to specify unordered sets of subelements Difficult to specify unordered sets of subelements Order is usually irrelevant in databases (unlike in the document- layout environment from which XML evolved) Order is usually irrelevant in databases (unlike in the document- layout environment from which XML evolved) (A | B)* allows specification of an unordered set, but (A | B)* allows specification of an unordered set, but Cannot ensure that each of A and B occurs only once Cannot ensure that each of A and B occurs only once IDs and IDREFs are untyped IDs and IDREFs are untyped The owners attribute of an account may contain a reference to another account, which is meaningless The owners attribute of an account may contain a reference to another account, which is meaningless owners attribute should ideally be constrained to refer to customer elements owners attribute should ideally be constrained to refer to customer elements

Tree Model of XML Data Query and transformation languages are based on a tree model of XML data Query and transformation languages are based on a tree model of XML data An XML document is modeled as a tree, with nodes corresponding to elements and attributes An XML document is modeled as a tree, with nodes corresponding to elements and attributes Element nodes have child nodes, which can be attributes or subelements Element nodes have child nodes, which can be attributes or subelements Text in an element is modeled as a text node child of the element Text in an element is modeled as a text node child of the element Children of a node are ordered according to their order in the XML document Children of a node are ordered according to their order in the XML document Element and attribute nodes (except for the root node) have a single parent, which is an element node Element and attribute nodes (except for the root node) have a single parent, which is an element node The root node has a single child, which is the root element of the document The root node has a single child, which is the root element of the document Example Example Example

XPath XPath is used to address (select) parts of documents using path expressions XPath is used to address (select) parts of documents using path expressions A path expression is a sequence of steps separated by “/” A path expression is a sequence of steps separated by “/” Think of file names in a directory hierarchy Think of file names in a directory hierarchy Result of path expression: set of values that along with their containing elements/attributes match the specified path Result of path expression: set of values that along with their containing elements/attributes match the specified path E.g. /bank/customer/customer_name evaluated on the bank data we saw earlier returns E.g. /bank/customer/customer_name evaluated on the bank data we saw earlier returnsbank data bank data <customer_name>Hayes</customer_name><customer_name>Johnson</customer_name> E.g. /bank/customer/customer_name/text( ) E.g. /bank/customer/customer_name/text( ) returns the same names, but without the enclosing tags returns the same names, but without the enclosing tags

XPath (Cont.) The initial “/” denotes root of the document (above the top-level tag) The initial “/” denotes root of the document (above the top-level tag) Path expressions are evaluated left to right Path expressions are evaluated left to right Each step operates on the set of instances produced by the previous step Each step operates on the set of instances produced by the previous step Selection predicates may follow any step in a path, in [ ] Selection predicates may follow any step in a path, in [ ] E.g. /bank/customer/account[balance > 400] E.g. /bank/customer/account[balance > 400] returns account elements with a balance value greater than 400 returns account elements with a balance value greater than 400 /bank/customer/account[balance] returns account elements containing a balance subelement /bank/customer/account[balance] returns account elements containing a balance subelement Attributes are accessed using Attributes are accessed using E.g. /bank/customer/account[balance > E.g. /bank/customer/account[balance > returns the account numbers of accounts with balance > 400 returns the account numbers of accounts with balance > 400 Here we assume account_number is an attribute Here we assume account_number is an attribute Otherwise /bank/customer/account[balance > 400]/account_number Otherwise /bank/customer/account[balance > 400]/account_number IDREF attributes are not dereferenced automatically (more on this later) IDREF attributes are not dereferenced automatically (more on this later)

Functions in XPath XPath provides several functions XPath provides several functions The function count() at the end of a path counts the number of elements in the set generated by the path The function count() at the end of a path counts the number of elements in the set generated by the path E.g. /bank/customer/[count(./account) > 1] E.g. /bank/customer/[count(./account) > 1] Returns customer with > 1 accounts Returns customer with > 1 accounts Also function for testing position (1, 2,..) of node w.r.t. siblings Also function for testing position (1, 2,..) of node w.r.t. siblings Boolean connectives and and or and function not() can be used in predicates Boolean connectives and and or and function not() can be used in predicates IDREFs can be referenced using function id() IDREFs can be referenced using function id() id() can also be applied to sets of references such as IDREFS and even to strings containing multiple references separated by blanks id() can also be applied to sets of references such as IDREFS and even to strings containing multiple references separated by blanks E.g. E.g. returns all customers referred to from the owners attribute of account elements. returns all customers referred to from the owners attribute of account elements.

More XPath Example Element AA with two ancestors Element AA with two ancestors /*/*/AA /*/*/AA First BB element of AA element First BB element of AA element /AA/BB[1] /AA/BB[1] All the CC elements of the BB elements which has an sub-element A with value ‘3’ All the CC elements of the BB elements which has an sub-element A with value ‘3’ /BB[A=‘3’]/CC /BB[A=‘3’]/CC Any elements AA or elements CC of elements BB Any elements AA or elements CC of elements BB //AA | /BB/CC //AA | /BB/CC

Even More XPath Example Select all sub-elements of elements BB of elements AA Select all sub-elements of elements BB of elements AA /BB/AA/* /BB/AA/* When you do not know the sub-elements When you do not know the sub-elements Different from /BB/AA Different from /BB/AA Select all attributes named ‘aa’ Select all attributes named ‘aa’ Select all CITIES elements with an attribute named aa Select all CITIES elements with an attribute named aa Select all CITIES elements with an attribute named aa with value ‘123’ Select all CITIES elements with an attribute named aa with value ‘123’ = ‘123’] = ‘123’]