(el,domBuilder,parseStack)
| 1633 | } |
| 1634 | } |
| 1635 | function appendElement(el,domBuilder,parseStack){ |
| 1636 | var tagName = el.tagName; |
| 1637 | var localNSMap = null; |
| 1638 | var currentNSMap = parseStack[parseStack.length-1].currentNSMap; |
| 1639 | var i = el.length; |
| 1640 | while(i--){ |
| 1641 | var a = el[i]; |
| 1642 | var qName = a.qName; |
| 1643 | var value = a.value; |
| 1644 | var nsp = qName.indexOf(':'); |
| 1645 | if(nsp>0){ |
| 1646 | var prefix = a.prefix = qName.slice(0,nsp); |
| 1647 | var localName = qName.slice(nsp+1); |
| 1648 | var nsPrefix = prefix === 'xmlns' && localName |
| 1649 | }else{ |
| 1650 | localName = qName; |
| 1651 | prefix = null |
| 1652 | nsPrefix = qName === 'xmlns' && '' |
| 1653 | } |
| 1654 | a.localName = localName ; |
| 1655 | if(nsPrefix !== false){//hack!! |
| 1656 | if(localNSMap == null){ |
| 1657 | localNSMap = {} |
| 1658 | _copy(currentNSMap,currentNSMap={}) |
| 1659 | } |
| 1660 | currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; |
| 1661 | a.uri = 'http://www.w3.org/2000/xmlns/' |
| 1662 | domBuilder.startPrefixMapping(nsPrefix, value) |
| 1663 | } |
| 1664 | } |
| 1665 | var i = el.length; |
| 1666 | while(i--){ |
| 1667 | a = el[i]; |
| 1668 | var prefix = a.prefix; |
| 1669 | if(prefix){//no prefix attribute has no namespace |
| 1670 | if(prefix === 'xml'){ |
| 1671 | a.uri = 'http://www.w3.org/XML/1998/namespace'; |
| 1672 | }if(prefix !== 'xmlns'){ |
| 1673 | a.uri = currentNSMap[prefix] |
| 1674 | } |
| 1675 | } |
| 1676 | } |
| 1677 | var nsp = tagName.indexOf(':'); |
| 1678 | if(nsp>0){ |
| 1679 | prefix = el.prefix = tagName.slice(0,nsp); |
| 1680 | localName = el.localName = tagName.slice(nsp+1); |
| 1681 | }else{ |
| 1682 | prefix = null;//important!! |
| 1683 | localName = el.localName = tagName; |
| 1684 | } |
| 1685 | var ns = el.uri = currentNSMap[prefix || '']; |
| 1686 | domBuilder.startElement(ns,localName,tagName,el); |
| 1687 | if(el.closed){ |
| 1688 | domBuilder.endElement(ns,localName,tagName); |
| 1689 | if(localNSMap){ |
| 1690 | for(prefix in localNSMap){ |
| 1691 | domBuilder.endPrefixMapping(prefix) |
| 1692 | } |
no test coverage detected