PoshCode Archive  Hex Artifact Content

Artifact 6e6005a5329fca0082d7936b1e078dfed9e03523aaf1bcb56dbc638285671949:

  • File Xml-Module.ps1 — part of check-in [18055579b7] at 2018-06-10 13:02:31 on branch trunk — My rewritten XML DSL now has better element name handling than last time, and handles null attribute values a little more gracefully. NOTE: if you think that the statement you’re using to pass an attribute value could be null, you should really be very explicit and pass it using the colon syntax like this: -attribute:$value. Also, I fixed a bug when you only have one element. (user: Joel Bennett size: 33447)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 58  hell..# title: X
0030: 6d 6c 20 4d 6f 64 75 6c 65 0d 0a 23 20 64 65 73  ml Module..# des
0040: 63 72 69 70 74 69 6f 6e 3a 20 4d 79 20 72 65 77  cription: My rew
0050: 72 69 74 74 65 6e 20 58 4d 4c 20 44 53 4c 20 6e  ritten XML DSL n
0060: 6f 77 20 68 61 73 20 62 65 74 74 65 72 20 65 6c  ow has better el
0070: 65 6d 65 6e 74 20 6e 61 6d 65 20 68 61 6e 64 6c  ement name handl
0080: 69 6e 67 20 74 68 61 6e 20 6c 61 73 74 20 74 69  ing than last ti
0090: 6d 65 2c 20 61 6e 64 20 68 61 6e 64 6c 65 73 20  me, and handles 
00a0: 6e 75 6c 6c 20 61 74 74 72 69 62 75 74 65 20 76  null attribute v
00b0: 61 6c 75 65 73 20 61 20 6c 69 74 74 6c 65 20 6d  alues a little m
00c0: 6f 72 65 20 67 72 61 63 65 66 75 6c 6c 79 2e 20  ore gracefully. 
00d0: 4e 4f 54 45 3a 20 69 66 20 79 6f 75 20 74 68 69  NOTE: if you thi
00e0: 6e 6b 20 74 68 61 74 20 74 68 65 20 73 74 61 74  nk that the stat
00f0: 65 6d 65 6e 74 20 79 6f 75 e2 80 99 72 65 20 75  ement you...re u
0100: 73 69 6e 67 20 74 6f 20 70 61 73 73 20 61 6e 20  sing to pass an 
0110: 61 74 74 72 69 62 75 74 65 20 76 61 6c 75 65 20  attribute value 
0120: 63 6f 75 6c 64 20 62 65 20 6e 75 6c 6c 2c 20 79  could be null, y
0130: 6f 75 20 73 68 6f 75 6c 64 20 72 65 61 6c 6c 79  ou should really
0140: 20 62 65 20 76 65 72 79 20 65 78 70 6c 69 63 69   be very explici
0150: 74 20 61 6e 64 20 70 61 73 73 20 69 74 20 75 73  t and pass it us
0160: 69 6e 67 20 74 68 65 20 63 6f 6c 6f 6e 20 73 79  ing the colon sy
0170: 6e 74 61 78 20 6c 69 6b 65 20 74 68 69 73 3a 20  ntax like this: 
0180: 2d 61 74 74 72 69 62 75 74 65 3a 24 76 61 6c 75  -attribute:$valu
0190: 65 2e 20 20 41 6c 73 6f 2c 20 49 20 66 69 78 65  e.  Also, I fixe
01a0: 64 20 61 20 62 75 67 20 77 68 65 6e 20 79 6f 75  d a bug when you
01b0: 20 6f 6e 6c 79 20 68 61 76 65 20 6f 6e 65 20 65   only have one e
01c0: 6c 65 6d 65 6e 74 2e 0d 0a 23 20 76 65 72 73 69  lement...# versi
01d0: 6f 6e 3a 20 34 2e 35 0d 0a 23 20 74 79 70 65 3a  on: 4.5..# type:
01e0: 20 66 75 6e 63 74 69 6f 6e 0d 0a 23 20 61 75 74   function..# aut
01f0: 68 6f 72 3a 20 4a 6f 65 6c 20 42 65 6e 6e 65 74  hor: Joel Bennet
0200: 74 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43  t..# license: CC
0210: 30 0d 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 53  0..# function: S
0220: 65 6c 65 63 74 2d 58 6d 6c 0d 0a 23 20 78 2d 70  elect-Xml..# x-p
0230: 6f 73 68 63 6f 64 65 2d 69 64 3a 20 31 38 38 38  oshcode-id: 1888
0240: 0d 0a 23 20 78 2d 64 65 72 69 76 65 64 2d 66 72  ..# x-derived-fr
0250: 6f 6d 2d 69 64 3a 20 32 32 39 30 0d 0a 23 20 78  om-id: 2290..# x
0260: 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31 31 2d  -archived: 2011-
0270: 30 38 2d 32 39 54 31 31 3a 32 32 3a 30 30 0d 0a  08-29T11:22:00..
0280: 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a 20 32  # x-published: 2
0290: 30 31 31 2d 30 36 2d 30 31 54 32 31 3a 34 35 3a  011-06-01T21:45:
02a0: 30 30 0d 0a 23 0d 0a 23 20 68 34 2e 20 54 68 65  00..#..# h4. The
02b0: 20 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 73   other functions
02c0: 20 72 6f 75 6e 64 20 6f 75 74 20 74 68 65 20 73   round out the s
02d0: 65 74 20 6f 66 20 58 4d 4c 20 66 75 6e 63 74 69  et of XML functi
02e0: 6f 6e 61 6c 69 74 79 20 28 65 73 70 65 63 69 61  onality (especia
02f0: 6c 6c 79 20 69 66 20 79 6f 75 20 64 6f 6e e2 80  lly if you don..
0300: 99 74 20 68 61 76 65 20 50 53 43 58 29 2e 20 0d  .t have PSCX). .
0310: 0a 23 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72  .# In particular
0320: 2c 20 6d 79 20 53 65 6c 65 63 74 2d 58 4d 4c 20  , my Select-XML 
0330: 69 6d 70 72 6f 76 65 73 20 6f 76 65 72 20 74 68  improves over th
0340: 65 20 62 75 69 6c 74 2d 69 6e 20 53 65 6c 65 63  e built-in Selec
0350: 74 2d 58 4d 4c 20 62 79 20 6c 65 76 65 72 61 67  t-XML by leverag
0360: 69 6e 67 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61  ing Remove-XmlNa
0370: 6d 65 73 70 61 63 65 20 74 6f 20 70 72 6f 76 69  mespace to provi
0380: 64 65 20 61 20 2d 52 65 6d 6f 76 65 4e 61 6d 65  de a -RemoveName
0390: 73 70 61 63 65 20 70 61 72 61 6d 65 74 65 72 20  space parameter 
03a0: e2 80 94 20 69 66 20 69 74 e2 80 99 73 20 73 75  ... if it...s su
03b0: 70 70 6c 69 65 64 2c 20 61 6c 6c 20 6f 66 20 74  pplied, all of t
03c0: 68 65 20 6e 61 6d 65 73 70 61 63 65 20 64 65 63  he namespace dec
03d0: 6c 61 72 61 74 69 6f 6e 73 20 61 6e 64 20 70 72  larations and pr
03e0: 65 66 69 78 65 73 20 61 72 65 20 72 65 6d 6f 76  efixes are remov
03f0: 65 64 20 66 72 6f 6d 20 61 6c 6c 20 58 4d 4c 20  ed from all XML 
0400: 6e 6f 64 65 73 20 28 62 79 20 61 6e 20 58 53 4c  nodes (by an XSL
0410: 20 74 72 61 6e 73 66 6f 72 6d 29 20 62 65 66 6f   transform) befo
0420: 72 65 20 73 65 61 72 63 68 69 6e 67 20 28 73 6f  re searching (so
0430: 20 79 6f 75 20 63 61 6e 20 61 63 74 75 61 6c 6c   you can actuall
0440: 79 20 66 69 6e 64 20 74 68 69 6e 67 73 2c 20 65  y find things, e
0450: 76 65 6e 20 77 69 74 68 20 6e 61 6d 65 73 70 61  ven with namespa
0460: 63 65 2d 71 75 61 6c 69 66 69 65 64 20 78 6d 6c  ce-qualified xml
0470: 29 2e 20 20 49 74 20 69 73 20 69 6d 70 6f 72 74  ).  It is import
0480: 61 6e 74 20 74 6f 20 6e 6f 74 65 20 74 68 61 74  ant to note that
0490: 20 74 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74   this means that
04a0: 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 72 65   the returned re
04b0: 73 75 6c 74 73 20 77 69 6c 6c 20 6e 6f 74 20 68  sults will not h
04c0: 61 76 65 20 6e 61 6d 65 73 70 61 63 65 73 20 69  ave namespaces i
04d0: 6e 20 74 68 65 6d 2c 20 65 76 65 6e 20 69 66 20  n them, even if 
04e0: 74 68 65 20 69 6e 70 75 74 20 58 4d 4c 20 64 69  the input XML di
04f0: 64 2e 0d 0a 23 20 41 6c 73 6f 2c 20 6f 6e 6c 79  d...# Also, only
0500: 20 72 61 77 20 58 6d 6c 4e 6f 64 65 73 20 61 72   raw XmlNodes ar
0510: 65 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  e returned from 
0520: 53 65 6c 65 63 74 2d 58 6d 6c 2c 20 73 6f 20 74  Select-Xml, so t
0530: 68 65 20 6f 75 74 70 75 74 20 69 73 6e e2 80 99  he output isn...
0540: 74 20 71 75 69 74 65 20 63 6f 6d 70 61 74 69 62  t quite compatib
0550: 6c 65 20 77 69 74 68 20 74 68 65 20 62 75 69 6c  le with the buil
0560: 74 20 69 6e 20 53 65 6c 65 63 74 2d 58 6d 6c 20  t in Select-Xml 
0570: e2 80 94 20 69 6e 73 74 65 61 64 2c 20 69 74 e2  ... instead, it.
0580: 80 99 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74  ..s equivalent t
0590: 6f 20 75 73 69 6e 67 20 69 74 20 74 68 65 20 77  o using it the w
05a0: 61 79 20 49 20 75 73 75 61 6c 6c 79 20 64 6f 3a  ay I usually do:
05b0: 20 53 65 6c 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20   Select-Xml ... 
05c0: 7c 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20  | Select-Object 
05d0: 2d 45 78 70 61 6e 64 20 4e 6f 64 65 0d 0a 23 0d  -Expand Node..#.
05e0: 0a 23 72 65 71 75 69 72 65 73 20 2d 76 65 72 73  .#requires -vers
05f0: 69 6f 6e 20 32 2e 30 0d 0a 0d 0a 23 20 49 6d 70  ion 2.0....# Imp
0600: 72 6f 76 65 73 20 6f 76 65 72 20 74 68 65 20 62  roves over the b
0610: 75 69 6c 74 2d 69 6e 20 53 65 6c 65 63 74 2d 58  uilt-in Select-X
0620: 4d 4c 20 62 79 20 6c 65 76 65 72 61 67 69 6e 67  ML by leveraging
0630: 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d 65 73   Remove-XmlNames
0640: 70 61 63 65 20 68 74 74 70 60 3a 2f 2f 70 6f 73  pace http`://pos
0650: 68 63 6f 64 65 2e 6f 72 67 2f 31 34 39 32 20 0d  hcode.org/1492 .
0660: 0a 23 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20  .# to provide a 
0670: 2d 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65  -RemoveNamespace
0680: 20 70 61 72 61 6d 65 74 65 72 20 2d 2d 20 69 66   parameter -- if
0690: 20 69 74 27 73 20 73 75 70 70 6c 69 65 64 2c 20   it's supplied, 
06a0: 61 6c 6c 20 6f 66 20 74 68 65 20 6e 61 6d 65 73  all of the names
06b0: 70 61 63 65 20 64 65 63 6c 61 72 61 74 69 6f 6e  pace declaration
06c0: 73 20 0d 0a 23 20 61 6e 64 20 70 72 65 66 69 78  s ..# and prefix
06d0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 66  es are removed f
06e0: 72 6f 6d 20 61 6c 6c 20 58 4d 4c 20 6e 6f 64 65  rom all XML node
06f0: 73 20 28 62 79 20 61 6e 20 58 53 4c 20 74 72 61  s (by an XSL tra
0700: 6e 73 66 6f 72 6d 29 20 62 65 66 6f 72 65 20 73  nsform) before s
0710: 65 61 72 63 68 69 6e 67 2e 20 0d 0a 23 20 49 4d  earching. ..# IM
0720: 50 4f 52 54 41 4e 54 3a 20 72 65 74 75 72 6e 65  PORTANT: returne
0730: 64 20 72 65 73 75 6c 74 73 20 2a 77 69 6c 6c 20  d results *will 
0740: 6e 6f 74 2a 20 68 61 76 65 20 6e 61 6d 65 73 70  not* have namesp
0750: 61 63 65 73 20 69 6e 20 74 68 65 6d 2c 20 65 76  aces in them, ev
0760: 65 6e 20 69 66 20 74 68 65 20 69 6e 70 75 74 20  en if the input 
0770: 58 4d 4c 20 64 69 64 2e 20 0d 0a 0d 0a 23 20 41  XML did. ....# A
0780: 6c 73 6f 2c 20 6f 6e 6c 79 20 72 61 77 20 58 6d  lso, only raw Xm
0790: 6c 4e 6f 64 65 73 20 61 72 65 20 72 65 74 75 72  lNodes are retur
07a0: 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 20 66 75  ned from this fu
07b0: 6e 63 74 69 6f 6e 2c 20 73 6f 20 74 68 65 20 6f  nction, so the o
07c0: 75 74 70 75 74 20 69 73 6e 27 74 20 63 6f 6d 70  utput isn't comp
07d0: 6c 65 74 65 6c 79 20 63 6f 6d 70 61 74 69 62 6c  letely compatibl
07e0: 65 20 0d 0a 23 20 77 69 74 68 20 74 68 65 20 62  e ..# with the b
07f0: 75 69 6c 74 20 69 6e 20 53 65 6c 65 63 74 2d 58  uilt in Select-X
0800: 6d 6c 2e 20 49 74 27 73 20 65 71 75 69 76 61 6c  ml. It's equival
0810: 65 6e 74 20 74 6f 20 75 73 69 6e 67 20 53 65 6c  ent to using Sel
0820: 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c 20 53 65  ect-Xml ... | Se
0830: 6c 65 63 74 2d 4f 62 6a 65 63 74 20 2d 45 78 70  lect-Object -Exp
0840: 61 6e 64 20 4e 6f 64 65 0d 0a 0d 0a 23 20 56 65  and Node....# Ve
0850: 72 73 69 6f 6e 20 48 69 73 74 6f 72 79 3a 0d 0a  rsion History:..
0860: 23 20 53 65 6c 65 63 74 2d 58 6d 6c 20 32 2e 30  # Select-Xml 2.0
0870: 20 54 68 69 73 20 77 61 73 20 74 68 65 20 66 69   This was the fi
0880: 72 73 74 20 73 63 72 69 70 74 20 76 65 72 73 69  rst script versi
0890: 6f 6e 20 49 20 77 72 6f 74 65 2e 0d 0a 23 20 20  on I wrote...#  
08a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74                it
08b0: 20 64 69 64 6e 27 74 20 66 75 6e 63 74 69 6f 6e   didn't function
08c0: 20 69 64 65 6e 74 69 63 61 6c 6c 79 20 74 6f 20   identically to 
08d0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 53 65 6c  the built-in Sel
08e0: 65 63 74 2d 58 6d 6c 20 77 69 74 68 20 72 65 67  ect-Xml with reg
08f0: 61 72 64 73 20 74 6f 20 70 61 72 61 6d 65 74 65  ards to paramete
0900: 72 20 70 61 72 73 69 6e 67 0d 0a 23 20 53 65 6c  r parsing..# Sel
0910: 65 63 74 2d 58 6d 6c 20 32 2e 31 20 4d 61 74 63  ect-Xml 2.1 Matc
0920: 68 65 64 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  hed the built-in
0930: 20 53 65 6c 65 63 74 2d 58 6d 6c 20 70 61 72 61   Select-Xml para
0940: 6d 65 74 65 72 20 73 65 74 73 2c 20 69 74 27 73  meter sets, it's
0950: 20 6e 6f 77 20 61 20 64 72 6f 70 2d 69 6e 20 72   now a drop-in r
0960: 65 70 6c 61 63 65 6d 65 6e 74 20 0d 0a 23 20 20  eplacement ..#  
0970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 55                BU
0980: 54 20 6f 6e 6c 79 20 69 66 20 79 6f 75 20 77 65  T only if you we
0990: 72 65 20 75 73 69 6e 67 20 74 68 65 20 6f 72 69  re using the ori
09a0: 67 69 6e 61 6c 20 77 69 74 68 3a 20 53 65 6c 65  ginal with: Sele
09b0: 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c 20 53 65 6c  ct-Xml ... | Sel
09c0: 65 63 74 2d 4f 62 6a 65 63 74 20 2d 45 78 70 61  ect-Object -Expa
09d0: 6e 64 20 4e 6f 64 65 0d 0a 23 20 53 65 6c 65 63  nd Node..# Selec
09e0: 74 2d 58 6d 6c 20 32 2e 32 20 46 69 78 65 73 20  t-Xml 2.2 Fixes 
09f0: 61 20 62 75 67 20 69 6e 20 74 68 65 20 2d 43 6f  a bug in the -Co
0a00: 6e 74 65 6e 74 20 70 61 72 61 6d 65 74 65 72 73  ntent parameters
0a10: 65 74 20 77 68 65 72 65 20 2d 52 65 6d 6f 76 65  et where -Remove
0a20: 4e 61 6d 65 73 70 61 63 65 20 77 61 73 20 2a 70  Namespace was *p
0a30: 72 65 73 75 6d 65 64 2a 0d 0a 23 20 56 65 72 73  resumed*..# Vers
0a40: 69 6f 6e 20 20 20 20 33 2e 30 20 41 64 64 65 64  ion    3.0 Added
0a50: 20 4e 65 77 2d 58 44 6f 63 75 6d 65 6e 74 20 61   New-XDocument a
0a60: 6e 64 20 61 73 73 6f 63 69 61 74 65 64 20 67 65  nd associated ge
0a70: 6e 65 72 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  neration functio
0a80: 6e 73 20 66 6f 72 20 6d 79 20 58 4d 4c 20 44 53  ns for my XML DS
0a90: 4c 0d 0a 23 20 56 65 72 73 69 6f 6e 20 20 20 20  L..# Version    
0aa0: 33 2e 31 20 46 69 78 65 64 20 61 20 72 65 61 6c  3.1 Fixed a real
0ab0: 6c 79 20 75 67 6c 79 20 62 75 67 20 69 6e 20 4e  ly ugly bug in N
0ac0: 65 77 2d 58 44 6f 63 75 6d 65 6e 74 20 69 6e 20  ew-XDocument in 
0ad0: 33 2e 30 20 77 68 69 63 68 20 49 20 73 68 6f 75  3.0 which I shou
0ae0: 6c 64 20 6e 6f 74 20 68 61 76 65 20 72 65 6c 65  ld not have rele
0af0: 61 73 65 64 0d 0a 23 20 56 65 72 73 69 6f 6e 20  ased..# Version 
0b00: 20 20 20 34 2e 30 20 4e 65 76 65 72 20 63 6f 6e     4.0 Never con
0b10: 74 65 6e 74 20 74 6f 20 6c 65 61 76 65 20 77 65  tent to leave we
0b20: 6c 6c 20 65 6e 6f 75 67 68 20 61 6c 6f 6e 65 2c  ll enough alone,
0b30: 20 49 27 76 65 20 63 6f 6d 70 6c 65 74 65 6c 79   I've completely
0b40: 20 72 65 77 6f 72 6b 65 64 20 4e 65 77 2d 58 44   reworked New-XD
0b50: 6f 63 75 6d 65 6e 74 0d 0a 23 20 56 65 72 73 69  ocument..# Versi
0b60: 6f 6e 20 20 20 20 34 2e 31 20 54 77 65 61 6b 65  on    4.1 Tweake
0b70: 64 20 6e 61 6d 65 73 70 61 63 65 73 20 61 67 61  d namespaces aga
0b80: 69 6e 20 73 6f 20 74 68 65 79 20 64 6f 6e 27 74  in so they don't
0b90: 20 63 61 73 63 61 64 65 20 64 6f 77 6e 20 77 68   cascade down wh
0ba0: 65 6e 20 74 68 65 79 20 73 68 6f 75 6c 64 6e 27  en they shouldn'
0bb0: 74 2e 20 47 6f 74 20 72 69 64 20 6f 66 20 74 68  t. Got rid of th
0bc0: 65 20 75 6e 6e 65 63 65 73 73 61 72 79 20 73 74  e unnecessary st
0bd0: 61 63 6b 2e 0d 0a 23 20 56 65 72 73 69 6f 6e 20  ack...# Version 
0be0: 20 20 20 34 2e 32 20 54 69 67 68 74 65 6e 65 64     4.2 Tightened
0bf0: 20 78 6d 6c 3a 20 6f 6e 6c 79 20 63 6d 64 6c 65   xml: only cmdle
0c00: 74 2c 20 66 75 6e 63 74 69 6f 6e 2c 20 61 6e 64  t, function, and
0c10: 20 65 78 74 65 72 6e 61 6c 20 73 63 72 69 70 74   external script
0c20: 73 2c 20 77 69 74 68 20 22 2d 22 20 69 6e 20 74  s, with "-" in t
0c30: 68 65 69 72 20 6e 61 6d 65 73 20 61 72 65 20 65  heir names are e
0c40: 78 65 6d 70 74 65 64 20 66 72 6f 6d 20 62 65 69  xempted from bei
0c50: 6e 67 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74  ng converted int
0c60: 6f 20 78 6d 6c 20 74 61 67 73 2e 0d 0a 23 20 20  o xml tags...#  
0c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 69                Fi
0c80: 78 65 64 20 73 6f 6d 65 20 61 6c 69 61 73 20 65  xed some alias e
0c90: 72 72 6f 72 20 6d 65 73 73 61 67 65 73 20 63 61  rror messages ca
0ca0: 75 73 65 64 20 77 68 65 6e 20 50 53 43 58 20 69  used when PSCX i
0cb0: 73 20 61 6c 72 65 61 64 79 20 6c 6f 61 64 65 64  s already loaded
0cc0: 20 28 77 65 20 6f 76 65 72 77 72 69 74 65 20 74   (we overwrite t
0cd0: 68 65 69 72 20 61 6c 69 61 73 65 73 20 66 6f 72  heir aliases for
0ce0: 20 63 76 78 6d 6c 20 61 6e 64 20 66 78 6d 6c 29   cvxml and fxml)
0cf0: 0d 0a 23 20 56 65 72 73 69 6f 6e 20 20 20 20 34  ..# Version    4
0d00: 2e 33 20 41 64 64 65 64 20 61 20 50 61 74 68 20  .3 Added a Path 
0d10: 70 61 72 61 6d 65 74 65 72 20 73 65 74 20 74 6f  parameter set to
0d20: 20 46 6f 72 6d 61 74 2d 58 4d 4c 20 73 6f 20 79   Format-XML so y
0d30: 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 78  ou can specify x
0d40: 6d 6c 20 66 69 6c 65 73 20 66 6f 72 20 70 72 65  ml files for pre
0d50: 74 79 20 70 72 69 6e 74 69 6e 67 0d 0a 23 20 56  ty printing..# V
0d60: 65 72 73 69 6f 6e 20 20 20 20 34 2e 35 20 46 69  ersion    4.5 Fi
0d70: 78 65 64 20 70 6f 73 73 69 62 6c 65 20 5b 41 72  xed possible [Ar
0d80: 72 61 79 5d 3a 3a 52 65 76 65 72 73 65 20 63 61  ray]::Reverse ca
0d90: 6c 6c 20 6f 6e 20 61 20 6e 6f 6e 2d 61 72 72 61  ll on a non-arra
0da0: 79 20 69 6e 20 4e 65 77 2d 58 45 6c 65 6d 65 6e  y in New-XElemen
0db0: 74 20 28 75 73 65 64 20 62 79 20 4e 65 77 2d 58  t (used by New-X
0dc0: 44 6f 63 75 6d 65 6e 74 29 0d 0a 23 20 20 20 20  Document)..#    
0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 57 6f 72 6b              Work
0de0: 20 61 72 6f 75 6e 64 20 70 6f 73 73 69 62 6c 65   around possible
0df0: 20 76 61 72 69 61 62 6c 65 20 73 6c 69 70 70 69   variable slippi
0e00: 6e 67 20 6f 6e 20 6e 75 6c 6c 20 76 61 6c 75 65  ng on null value
0e10: 73 20 62 79 3a 0d 0a 23 20 20 20 20 20 20 20 20  s by:..#        
0e20: 20 20 20 20 20 20 20 20 31 29 20 61 6c 6c 6f 77          1) allow
0e30: 69 6e 67 20 2d 70 61 72 61 6d 3a 24 76 61 6c 75  ing -param:$valu
0e40: 65 20 73 79 6e 74 61 78 20 28 77 68 69 63 68 20  e syntax (which 
0e50: 64 6f 65 73 6e 27 74 20 66 61 69 6c 20 77 68 65  doesn't fail whe
0e60: 6e 20 24 76 61 6c 75 65 20 69 73 20 6e 75 6c 6c  n $value is null
0e70: 29 0d 0a 23 20 20 20 20 20 20 20 20 20 20 20 20  )..#            
0e80: 20 20 20 20 32 29 20 74 65 73 74 69 6e 67 20 66      2) testing f
0e90: 6f 72 20 2d 6e 61 6d 65 20 73 79 6e 74 61 78 20  or -name syntax 
0ea0: 6f 6e 20 74 68 65 20 76 61 6c 75 65 20 61 6e 64  on the value and
0eb0: 20 75 73 69 6e 67 20 69 74 20 61 73 20 61 6e 20   using it as an 
0ec0: 61 74 74 72 69 62 75 74 65 20 69 6e 73 74 65 61  attribute instea
0ed0: 64 0d 0a 0d 0a 24 78 6c 72 38 72 20 3d 20 5b 74  d....$xlr8r = [t
0ee0: 79 70 65 5d 3a 3a 67 65 74 74 79 70 65 28 22 53  ype]::gettype("S
0ef0: 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74  ystem.Management
0f00: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 54 79 70 65  .Automation.Type
0f10: 41 63 63 65 6c 65 72 61 74 6f 72 73 22 29 0d 0a  Accelerators")..
0f20: 24 78 6c 69 6e 71 20 3d 20 5b 52 65 66 6c 65 63  $xlinq = [Reflec
0f30: 74 69 6f 6e 2e 41 73 73 65 6d 62 6c 79 5d 3a 3a  tion.Assembly]::
0f40: 4c 6f 61 64 28 22 53 79 73 74 65 6d 2e 58 6d 6c  Load("System.Xml
0f50: 2e 4c 69 6e 71 2c 20 56 65 72 73 69 6f 6e 3d 33  .Linq, Version=3
0f60: 2e 35 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d  .5.0.0, Culture=
0f70: 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b  neutral, PublicK
0f80: 65 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35 36  eyToken=b77a5c56
0f90: 31 39 33 34 65 30 38 39 22 29 0d 0a 24 78 6c 69  1934e089")..$xli
0fa0: 6e 71 2e 47 65 74 54 79 70 65 73 28 29 20 7c 20  nq.GetTypes() | 
0fb0: 3f 20 7b 20 24 5f 2e 49 73 50 75 62 6c 69 63 20  ? { $_.IsPublic 
0fc0: 2d 61 6e 64 20 21 24 5f 2e 49 73 53 65 72 69 61  -and !$_.IsSeria
0fd0: 6c 69 7a 61 62 6c 65 20 2d 61 6e 64 20 24 5f 2e  lizable -and $_.
0fe0: 4e 61 6d 65 20 2d 6e 65 20 22 45 78 74 65 6e 73  Name -ne "Extens
0ff0: 69 6f 6e 73 22 20 2d 61 6e 64 20 21 24 78 6c 72  ions" -and !$xlr
1000: 38 72 3a 3a 47 65 74 5b 24 5f 2e 4e 61 6d 65 5d  8r::Get[$_.Name]
1010: 20 7d 20 7c 20 25 20 7b 0d 0a 20 20 24 78 6c 72   } | % {..  $xlr
1020: 38 72 3a 3a 41 64 64 28 20 24 5f 2e 4e 61 6d 65  8r::Add( $_.Name
1030: 2c 20 24 5f 2e 46 75 6c 6c 4e 61 6d 65 20 29 0d  , $_.FullName ).
1040: 0a 7d 0d 0a 69 66 28 21 24 78 6c 72 38 72 3a 3a  .}..if(!$xlr8r::
1050: 47 65 74 5b 22 53 74 61 63 6b 22 5d 29 20 7b 0d  Get["Stack"]) {.
1060: 0a 20 20 20 24 78 6c 72 38 72 3a 3a 41 64 64 28  .   $xlr8r::Add(
1070: 20 22 53 74 61 63 6b 22 2c 20 22 53 79 73 74 65   "Stack", "Syste
1080: 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65  m.Collections.Ge
1090: 6e 65 72 69 63 2e 53 74 61 63 6b 60 60 31 2c 20  neric.Stack``1, 
10a0: 53 79 73 74 65 6d 2c 20 56 65 72 73 69 6f 6e 3d  System, Version=
10b0: 32 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65  2.0.0.0, Culture
10c0: 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63  =neutral, Public
10d0: 4b 65 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35  KeyToken=b77a5c5
10e0: 36 31 39 33 34 65 30 38 39 22 20 29 0d 0a 7d 0d  61934e089" )..}.
10f0: 0a 69 66 28 21 24 78 6c 72 38 72 3a 3a 47 65 74  .if(!$xlr8r::Get
1100: 5b 22 44 69 63 74 69 6f 6e 61 72 79 22 5d 29 20  ["Dictionary"]) 
1110: 7b 0d 0a 20 20 20 24 78 6c 72 38 72 3a 3a 41 64  {..   $xlr8r::Ad
1120: 64 28 20 22 44 69 63 74 69 6f 6e 61 72 79 22 2c  d( "Dictionary",
1130: 20 22 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74   "System.Collect
1140: 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44 69 63  ions.Generic.Dic
1150: 74 69 6f 6e 61 72 79 60 60 32 2c 20 6d 73 63 6f  tionary``2, msco
1160: 72 6c 69 62 2c 20 56 65 72 73 69 6f 6e 3d 32 2e  rlib, Version=2.
1170: 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d 6e  0.0.0, Culture=n
1180: 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b 65  eutral, PublicKe
1190: 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35 36 31  yToken=b77a5c561
11a0: 39 33 34 65 30 38 39 22 20 29 0d 0a 7d 0d 0a 69  934e089" )..}..i
11b0: 66 28 21 24 78 6c 72 38 72 3a 3a 47 65 74 5b 22  f(!$xlr8r::Get["
11c0: 50 53 50 61 72 73 65 72 22 5d 29 20 7b 0d 0a 20  PSParser"]) {.. 
11d0: 20 20 24 78 6c 72 38 72 3a 3a 41 64 64 28 20 22    $xlr8r::Add( "
11e0: 50 53 50 61 72 73 65 72 22 2c 20 22 53 79 73 74  PSParser", "Syst
11f0: 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41 75  em.Management.Au
1200: 74 6f 6d 61 74 69 6f 6e 2e 50 53 50 61 72 73 65  tomation.PSParse
1210: 72 2c 20 53 79 73 74 65 6d 2e 4d 61 6e 61 67 65  r, System.Manage
1220: 6d 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2c  ment.Automation,
1230: 20 56 65 72 73 69 6f 6e 3d 31 2e 30 2e 30 2e 30   Version=1.0.0.0
1240: 2c 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61  , Culture=neutra
1250: 6c 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65  l, PublicKeyToke
1260: 6e 3d 33 31 62 66 33 38 35 36 61 64 33 36 34 65  n=31bf3856ad364e
1270: 33 35 22 20 29 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a  35" )..}........
1280: 66 69 6c 74 65 72 20 46 6f 72 6d 61 74 2d 58 4d  filter Format-XM
1290: 4c 20 7b 0d 0a 23 2e 53 79 6e 6f 70 73 69 73 0d  L {..#.Synopsis.
12a0: 0a 23 20 20 20 50 72 65 74 74 79 2d 70 72 69 6e  .#   Pretty-prin
12b0: 74 20 66 6f 72 6d 61 74 74 65 64 20 58 4d 4c 20  t formatted XML 
12c0: 73 6f 75 72 63 65 0d 0a 23 2e 44 65 73 63 72 69  source..#.Descri
12d0: 70 74 69 6f 6e 0d 0a 23 20 20 20 52 75 6e 73 20  ption..#   Runs 
12e0: 61 6e 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 20 74  an XmlDocument t
12f0: 68 72 6f 75 67 68 20 61 6e 20 61 75 74 6f 2d 69  hrough an auto-i
1300: 6e 64 65 6e 74 69 6e 67 20 58 6d 6c 57 72 69 74  ndenting XmlWrit
1310: 65 72 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72 20  er..#.Parameter 
1320: 58 6d 6c 0d 0a 23 20 20 20 54 68 65 20 58 6d 6c  Xml..#   The Xml
1330: 20 44 6f 63 75 6d 65 6e 74 0d 0a 23 2e 50 61 72   Document..#.Par
1340: 61 6d 65 74 65 72 20 50 61 74 68 0d 0a 23 20 20  ameter Path..#  
1350: 20 54 68 65 20 70 61 74 68 20 74 6f 20 61 6e 20   The path to an 
1360: 78 6d 6c 20 64 6f 63 75 6d 65 6e 74 20 28 6f 6e  xml document (on
1370: 20 64 69 73 63 20 6f 72 20 61 6e 79 20 6f 74 68   disc or any oth
1380: 65 72 20 63 6f 6e 74 65 6e 74 20 70 72 6f 76 69  er content provi
1390: 64 65 72 29 2e 0d 0a 23 2e 50 61 72 61 6d 65 74  der)...#.Paramet
13a0: 65 72 20 49 6e 64 65 6e 74 0d 0a 23 20 20 20 54  er Indent..#   T
13b0: 68 65 20 69 6e 64 65 6e 74 20 6c 65 76 65 6c 20  he indent level 
13c0: 28 64 65 66 61 75 6c 74 73 20 74 6f 20 32 20 73  (defaults to 2 s
13d0: 70 61 63 65 73 29 0d 0a 23 2e 45 78 61 6d 70 6c  paces)..#.Exampl
13e0: 65 0d 0a 23 20 20 20 5b 78 6d 6c 5d 24 78 6d 6c  e..#   [xml]$xml
13f0: 20 3d 20 67 65 74 2d 63 6f 6e 74 65 6e 74 20 44   = get-content D
1400: 61 74 61 2e 78 6d 6c 0d 0a 23 20 20 20 43 3a 5c  ata.xml..#   C:\
1410: 50 53 3e 46 6f 72 6d 61 74 2d 58 6d 6c 20 24 78  PS>Format-Xml $x
1420: 6d 6c 0d 0a 23 2e 45 78 61 6d 70 6c 65 0d 0a 23  ml..#.Example..#
1430: 20 20 20 67 65 74 2d 63 6f 6e 74 65 6e 74 20 44     get-content D
1440: 61 74 61 2e 78 6d 6c 20 7c 20 46 6f 72 6d 61 74  ata.xml | Format
1450: 2d 58 6d 6c 0d 0a 23 2e 45 78 61 6d 70 6c 65 0d  -Xml..#.Example.
1460: 0a 23 20 20 20 46 6f 72 6d 61 74 2d 58 6d 6c 20  .#   Format-Xml 
1470: 43 3a 5c 50 53 5c 44 61 74 61 2e 78 6d 6c 0d 0a  C:\PS\Data.xml..
1480: 23 2e 45 78 61 6d 70 6c 65 0d 0a 23 20 20 20 6c  #.Example..#   l
1490: 73 20 2a 2e 78 6d 6c 20 7c 20 46 6f 72 6d 61 74  s *.xml | Format
14a0: 2d 58 6d 6c 0d 0a 23 0d 0a 50 61 72 61 6d 28 0d  -Xml..#..Param(.
14b0: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
14c0: 6f 73 69 74 69 6f 6e 3d 30 2c 20 4d 61 6e 64 61  osition=0, Manda
14d0: 74 6f 72 79 3d 24 74 72 75 65 2c 20 56 61 6c 75  tory=$true, Valu
14e0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74  eFromPipeline=$t
14f0: 72 75 65 2c 20 50 61 72 61 6d 65 74 65 72 53 65  rue, ParameterSe
1500: 74 4e 61 6d 65 3d 22 44 6f 63 75 6d 65 6e 74 22  tName="Document"
1510: 29 5d 0d 0a 20 20 20 5b 78 6d 6c 5d 24 58 6d 6c  )]..   [xml]$Xml
1520: 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  ..,..   [Paramet
1530: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30 2c 20 4d  er(Position=0, M
1540: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 20  andatory=$true, 
1550: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
1560: 65 3d 24 74 72 75 65 2c 20 56 61 6c 75 65 46 72  e=$true, ValueFr
1570: 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70  omPipelineByProp
1580: 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 2c 20  ertyName=$true, 
1590: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
15a0: 3d 22 46 69 6c 65 22 29 5d 0d 0a 20 20 20 5b 41  ="File")]..   [A
15b0: 6c 69 61 73 28 22 50 73 50 61 74 68 22 29 5d 0d  lias("PsPath")].
15c0: 0a 20 20 20 5b 73 74 72 69 6e 67 5d 24 50 61 74  .   [string]$Pat
15d0: 68 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65  h..,..   [Parame
15e0: 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 66  ter(Mandatory=$f
15f0: 61 6c 73 65 29 5d 0d 0a 20 20 20 24 49 6e 64 65  alse)]..   $Inde
1600: 6e 74 3d 32 0d 0a 29 0d 0a 20 20 20 23 23 20 4c  nt=2..)..   ## L
1610: 6f 61 64 20 66 72 6f 6d 20 66 69 6c 65 2c 20 69  oad from file, i
1620: 66 20 6e 65 63 65 73 73 61 72 79 0d 0a 20 20 20  f necessary..   
1630: 69 66 28 24 50 61 74 68 29 20 7b 20 5b 78 6d 6c  if($Path) { [xml
1640: 5d 24 78 6d 6c 20 3d 20 47 65 74 2d 43 6f 6e 74  ]$xml = Get-Cont
1650: 65 6e 74 20 24 50 61 74 68 20 7d 0d 0a 20 20 20  ent $Path }..   
1660: 0d 0a 20 20 20 24 53 74 72 69 6e 67 57 72 69 74  ..   $StringWrit
1670: 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  er = New-Object 
1680: 53 79 73 74 65 6d 2e 49 4f 2e 53 74 72 69 6e 67  System.IO.String
1690: 57 72 69 74 65 72 0d 0a 20 20 20 24 58 6d 6c 57  Writer..   $XmlW
16a0: 72 69 74 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65  riter = New-Obje
16b0: 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d  ct System.Xml.Xm
16c0: 6c 54 65 78 74 57 72 69 74 65 72 20 24 53 74 72  lTextWriter $Str
16d0: 69 6e 67 57 72 69 74 65 72 0d 0a 20 20 20 24 78  ingWriter..   $x
16e0: 6d 6c 57 72 69 74 65 72 2e 46 6f 72 6d 61 74 74  mlWriter.Formatt
16f0: 69 6e 67 20 3d 20 22 69 6e 64 65 6e 74 65 64 22  ing = "indented"
1700: 0d 0a 20 20 20 24 78 6d 6c 57 72 69 74 65 72 2e  ..   $xmlWriter.
1710: 49 6e 64 65 6e 74 61 74 69 6f 6e 20 3d 20 24 49  Indentation = $I
1720: 6e 64 65 6e 74 0d 0a 20 20 20 24 78 6d 6c 2e 57  ndent..   $xml.W
1730: 72 69 74 65 43 6f 6e 74 65 6e 74 54 6f 28 24 58  riteContentTo($X
1740: 6d 6c 57 72 69 74 65 72 29 0d 0a 20 20 20 24 58  mlWriter)..   $X
1750: 6d 6c 57 72 69 74 65 72 2e 46 6c 75 73 68 28 29  mlWriter.Flush()
1760: 0d 0a 20 20 20 24 53 74 72 69 6e 67 57 72 69 74  ..   $StringWrit
1770: 65 72 2e 46 6c 75 73 68 28 29 0d 0a 20 20 20 57  er.Flush()..   W
1780: 72 69 74 65 2d 4f 75 74 70 75 74 20 24 53 74 72  rite-Output $Str
1790: 69 6e 67 57 72 69 74 65 72 2e 54 6f 53 74 72 69  ingWriter.ToStri
17a0: 6e 67 28 29 0d 0a 7d 0d 0a 53 65 74 2d 41 6c 69  ng()..}..Set-Ali
17b0: 61 73 20 66 78 6d 6c 20 46 6f 72 6d 61 74 2d 58  as fxml Format-X
17c0: 6d 6c 20 2d 45 41 20 30 0d 0a 0d 0a 66 75 6e 63  ml -EA 0....func
17d0: 74 69 6f 6e 20 53 65 6c 65 63 74 2d 58 6d 6c 20  tion Select-Xml 
17e0: 7b 0d 0a 23 2e 53 79 6e 6f 70 73 69 73 0d 0a 23  {..#.Synopsis..#
17f0: 20 20 54 68 65 20 53 65 6c 65 63 74 2d 58 4d 4c    The Select-XML
1800: 20 63 6d 64 6c 65 74 20 6c 65 74 73 20 79 6f 75   cmdlet lets you
1810: 20 75 73 65 20 58 50 61 74 68 20 71 75 65 72 69   use XPath queri
1820: 65 73 20 74 6f 20 73 65 61 72 63 68 20 66 6f 72  es to search for
1830: 20 74 65 78 74 20 69 6e 20 58 4d 4c 20 73 74 72   text in XML str
1840: 69 6e 67 73 20 61 6e 64 20 64 6f 63 75 6d 65 6e  ings and documen
1850: 74 73 2e 20 45 6e 74 65 72 20 61 6e 20 58 50 61  ts. Enter an XPa
1860: 74 68 20 71 75 65 72 79 2c 20 61 6e 64 20 75 73  th query, and us
1870: 65 20 74 68 65 20 43 6f 6e 74 65 6e 74 2c 20 50  e the Content, P
1880: 61 74 68 2c 20 6f 72 20 58 6d 6c 20 70 61 72 61  ath, or Xml para
1890: 6d 65 74 65 72 20 74 6f 20 73 70 65 63 69 66 79  meter to specify
18a0: 20 74 68 65 20 58 4d 4c 20 74 6f 20 62 65 20 73   the XML to be s
18b0: 65 61 72 63 68 65 64 2e 0d 0a 23 2e 44 65 73 63  earched...#.Desc
18c0: 72 69 70 74 69 6f 6e 0d 0a 23 20 20 49 6d 70 72  ription..#  Impr
18d0: 6f 76 65 73 20 6f 76 65 72 20 74 68 65 20 62 75  oves over the bu
18e0: 69 6c 74 2d 69 6e 20 53 65 6c 65 63 74 2d 58 4d  ilt-in Select-XM
18f0: 4c 20 62 79 20 6c 65 76 65 72 61 67 69 6e 67 20  L by leveraging 
1900: 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d 65 73 70  Remove-XmlNamesp
1910: 61 63 65 20 74 6f 20 70 72 6f 76 69 64 65 20 61  ace to provide a
1920: 20 2d 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63   -RemoveNamespac
1930: 65 20 70 61 72 61 6d 65 74 65 72 20 2d 2d 20 69  e parameter -- i
1940: 66 20 69 74 27 73 20 73 75 70 70 6c 69 65 64 2c  f it's supplied,
1950: 20 61 6c 6c 20 6f 66 20 74 68 65 20 6e 61 6d 65   all of the name
1960: 73 70 61 63 65 20 64 65 63 6c 61 72 61 74 69 6f  space declaratio
1970: 6e 73 20 61 6e 64 20 70 72 65 66 69 78 65 73 20  ns and prefixes 
1980: 61 72 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  are removed from
1990: 20 61 6c 6c 20 58 4d 4c 20 6e 6f 64 65 73 20 28   all XML nodes (
19a0: 62 79 20 61 6e 20 58 53 4c 20 74 72 61 6e 73 66  by an XSL transf
19b0: 6f 72 6d 29 20 62 65 66 6f 72 65 20 73 65 61 72  orm) before sear
19c0: 63 68 69 6e 67 2e 20 20 0d 0a 23 20 20 0d 0a 23  ching.  ..#  ..#
19d0: 20 20 48 6f 77 65 76 65 72 2c 20 6f 6e 6c 79 20    However, only 
19e0: 72 61 77 20 58 6d 6c 4e 6f 64 65 73 20 61 72 65  raw XmlNodes are
19f0: 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74   returned from t
1a00: 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 73 6f  his function, so
1a10: 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 6e 27   the output isn'
1a20: 74 20 63 75 72 72 65 6e 74 6c 79 20 63 6f 6d 70  t currently comp
1a30: 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20  atible with the 
1a40: 62 75 69 6c 74 20 69 6e 20 53 65 6c 65 63 74 2d  built in Select-
1a50: 58 6d 6c 2c 20 62 75 74 20 69 73 20 65 71 75 69  Xml, but is equi
1a60: 76 61 6c 65 6e 74 20 74 6f 20 75 73 69 6e 67 20  valent to using 
1a70: 53 65 6c 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c  Select-Xml ... |
1a80: 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20 2d   Select-Object -
1a90: 45 78 70 61 6e 64 20 4e 6f 64 65 0d 0a 23 0d 0a  Expand Node..#..
1aa0: 23 20 20 41 6c 73 6f 20 6e 6f 74 65 20 74 68 61  #  Also note tha
1ab0: 74 20 69 66 20 74 68 65 20 2d 52 65 6d 6f 76 65  t if the -Remove
1ac0: 4e 61 6d 65 73 70 61 63 65 20 73 77 69 74 63 68  Namespace switch
1ad0: 20 69 73 20 73 75 70 70 6c 69 65 64 20 74 68 65   is supplied the
1ae0: 20 72 65 74 75 72 6e 65 64 20 72 65 73 75 6c 74   returned result
1af0: 73 20 2a 77 69 6c 6c 20 6e 6f 74 2a 20 68 61 76  s *will not* hav
1b00: 65 20 6e 61 6d 65 73 70 61 63 65 73 20 69 6e 20  e namespaces in 
1b10: 74 68 65 6d 2c 20 65 76 65 6e 20 69 66 20 74 68  them, even if th
1b20: 65 20 69 6e 70 75 74 20 58 4d 4c 20 64 69 64 2c  e input XML did,
1b30: 20 61 6e 64 20 65 6e 74 69 74 69 65 73 20 67 65   and entities ge
1b40: 74 20 65 78 70 61 6e 64 65 64 20 61 75 74 6f 6d  t expanded autom
1b50: 61 74 69 63 61 6c 6c 79 2e 0d 0a 23 2e 50 61 72  atically...#.Par
1b60: 61 6d 65 74 65 72 20 43 6f 6e 74 65 6e 74 0d 0a  ameter Content..
1b70: 23 20 20 53 70 65 63 69 66 69 65 73 20 61 20 73  #  Specifies a s
1b80: 74 72 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61  tring that conta
1b90: 69 6e 73 20 74 68 65 20 58 4d 4c 20 74 6f 20 73  ins the XML to s
1ba0: 65 61 72 63 68 2e 20 59 6f 75 20 63 61 6e 20 61  earch. You can a
1bb0: 6c 73 6f 20 70 69 70 65 20 73 74 72 69 6e 67 73  lso pipe strings
1bc0: 20 74 6f 20 53 65 6c 65 63 74 2d 58 4d 4c 2e 0d   to Select-XML..
1bd0: 0a 23 2e 50 61 72 61 6d 65 74 65 72 20 4e 61 6d  .#.Parameter Nam
1be0: 65 73 70 61 63 65 0d 0a 23 20 20 20 53 70 65 63  espace..#   Spec
1bf0: 69 66 69 65 73 20 61 20 68 61 73 68 20 74 61 62  ifies a hash tab
1c00: 6c 65 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 70  le of the namesp
1c10: 61 63 65 73 20 75 73 65 64 20 69 6e 20 74 68 65  aces used in the
1c20: 20 58 4d 4c 2e 20 55 73 65 20 74 68 65 20 66 6f   XML. Use the fo
1c30: 72 6d 61 74 20 40 7b 3c 6e 61 6d 65 73 70 61 63  rmat @{<namespac
1c40: 65 4e 61 6d 65 3e 20 3d 20 3c 6e 61 6d 65 73 70  eName> = <namesp
1c50: 61 63 65 55 72 69 3e 7d 2e 0d 0a 23 2e 50 61 72  aceUri>}...#.Par
1c60: 61 6d 65 74 65 72 20 50 61 74 68 0d 0a 23 20 20  ameter Path..#  
1c70: 20 53 70 65 63 69 66 69 65 73 20 74 68 65 20 70   Specifies the p
1c80: 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d  ath and file nam
1c90: 65 73 20 6f 66 20 74 68 65 20 58 4d 4c 20 66 69  es of the XML fi
1ca0: 6c 65 73 20 74 6f 20 73 65 61 72 63 68 2e 20 20  les to search.  
1cb0: 57 69 6c 64 63 61 72 64 73 20 61 72 65 20 70 65  Wildcards are pe
1cc0: 72 6d 69 74 74 65 64 2e 0d 0a 23 2e 50 61 72 61  rmitted...#.Para
1cd0: 6d 65 74 65 72 20 58 6d 6c 0d 0a 23 20 20 53 70  meter Xml..#  Sp
1ce0: 65 63 69 66 69 65 73 20 6f 6e 65 20 6f 72 20 6d  ecifies one or m
1cf0: 6f 72 65 20 58 4d 4c 20 6e 6f 64 65 73 20 74 6f  ore XML nodes to
1d00: 20 73 65 61 72 63 68 2e 0d 0a 23 2e 50 61 72 61   search...#.Para
1d10: 6d 65 74 65 72 20 58 50 61 74 68 0d 0a 23 20 20  meter XPath..#  
1d20: 53 70 65 63 69 66 69 65 73 20 61 6e 20 58 50 61  Specifies an XPa
1d30: 74 68 20 73 65 61 72 63 68 20 71 75 65 72 79 2e  th search query.
1d40: 20 54 68 65 20 71 75 65 72 79 20 6c 61 6e 67 75   The query langu
1d50: 61 67 65 20 69 73 20 63 61 73 65 2d 73 65 6e 73  age is case-sens
1d60: 69 74 69 76 65 2e 20 54 68 69 73 20 70 61 72 61  itive. This para
1d70: 6d 65 74 65 72 20 69 73 20 72 65 71 75 69 72 65  meter is require
1d80: 64 2e 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72 20  d...#.Parameter 
1d90: 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 0d  RemoveNamespace.
1da0: 0a 23 20 20 41 6c 6c 6f 77 73 20 74 68 65 20 65  .#  Allows the e
1db0: 78 65 63 75 74 69 6f 6e 20 6f 66 20 58 50 61 74  xecution of XPat
1dc0: 68 20 71 75 65 72 69 65 73 20 77 69 74 68 6f 75  h queries withou
1dd0: 74 20 6e 61 6d 65 73 70 61 63 65 20 71 75 61 6c  t namespace qual
1de0: 69 66 69 65 72 73 2e 20 0d 0a 23 20 20 0d 0a 23  ifiers. ..#  ..#
1df0: 20 20 49 66 20 79 6f 75 20 73 70 65 63 69 66 79    If you specify
1e00: 20 74 68 65 20 2d 52 65 6d 6f 76 65 4e 61 6d 65   the -RemoveName
1e10: 73 70 61 63 65 20 73 77 69 74 63 68 2c 20 61 6c  space switch, al
1e20: 6c 20 6e 61 6d 65 73 70 61 63 65 20 64 65 63 6c  l namespace decl
1e30: 61 72 61 74 69 6f 6e 73 20 61 6e 64 20 70 72 65  arations and pre
1e40: 66 69 78 65 73 20 61 72 65 20 61 63 74 75 61 6c  fixes are actual
1e50: 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20  ly removed from 
1e60: 74 68 65 20 58 6d 6c 20 62 65 66 6f 72 65 20 74  the Xml before t
1e70: 68 65 20 58 50 61 74 68 20 73 65 61 72 63 68 20  he XPath search 
1e80: 71 75 65 72 79 20 69 73 20 65 76 61 6c 75 61 74  query is evaluat
1e90: 65 64 2c 20 61 6e 64 20 79 6f 75 72 20 58 50 61  ed, and your XPa
1ea0: 74 68 20 71 75 65 72 79 20 73 68 6f 75 6c 64 20  th query should 
1eb0: 74 68 65 72 65 66 6f 72 65 20 4e 4f 54 20 63 6f  therefore NOT co
1ec0: 6e 74 61 69 6e 20 61 6e 79 20 6e 61 6d 65 73 70  ntain any namesp
1ed0: 61 63 65 20 70 72 65 66 69 78 65 73 2e 0d 0a 23  ace prefixes...#
1ee0: 20 0d 0a 23 20 20 4e 6f 74 65 20 74 68 61 74 20   ..#  Note that 
1ef0: 74 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20  this means that 
1f00: 74 68 65 20 72 65 74 75 72 6e 65 64 20 72 65 73  the returned res
1f10: 75 6c 74 73 20 2a 77 69 6c 6c 20 6e 6f 74 2a 20  ults *will not* 
1f20: 68 61 76 65 20 6e 61 6d 65 73 70 61 63 65 73 20  have namespaces 
1f30: 69 6e 20 74 68 65 6d 2c 20 65 76 65 6e 20 69 66  in them, even if
1f40: 20 74 68 65 20 69 6e 70 75 74 20 58 4d 4c 20 64   the input XML d
1f50: 69 64 2c 20 61 6e 64 20 65 6e 74 69 74 69 65 73  id, and entities
1f60: 20 67 65 74 20 65 78 70 61 6e 64 65 64 20 61 75   get expanded au
1f70: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 5b 43  tomatically...[C
1f80: 6d 64 6c 65 74 42 69 6e 64 69 6e 67 28 44 65 66  mdletBinding(Def
1f90: 61 75 6c 74 50 61 72 61 6d 65 74 65 72 53 65 74  aultParameterSet
1fa0: 4e 61 6d 65 3d 22 58 6d 6c 22 29 5d 0d 0a 50 41  Name="Xml")]..PA
1fb0: 52 41 4d 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65  RAM(..   [Parame
1fc0: 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c 50  ter(Position=1,P
1fd0: 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d  arameterSetName=
1fe0: 22 50 61 74 68 22 2c 4d 61 6e 64 61 74 6f 72 79  "Path",Mandatory
1ff0: 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d  =$true,ValueFrom
2000: 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72  PipelineByProper
2010: 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a  tyName=$true)]..
2020: 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e     [ValidateNotN
2030: 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20  ullOrEmpty()].. 
2040: 20 20 5b 41 6c 69 61 73 28 22 50 53 50 61 74 68    [Alias("PSPath
2050: 22 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b  ")]..   [String[
2060: 5d 5d 24 50 61 74 68 0d 0a 2c 0d 0a 20 20 20 5b  ]]$Path..,..   [
2070: 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69  Parameter(Positi
2080: 6f 6e 3d 31 2c 50 61 72 61 6d 65 74 65 72 53 65  on=1,ParameterSe
2090: 74 4e 61 6d 65 3d 22 58 6d 6c 22 2c 4d 61 6e 64  tName="Xml",Mand
20a0: 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75  atory=$true,Valu
20b0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74  eFromPipeline=$t
20c0: 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70  rue,ValueFromPip
20d0: 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e  elineByPropertyN
20e0: 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20  ame=$true)]..   
20f0: 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  [ValidateNotNull
2100: 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 5b  OrEmpty()]..   [
2110: 41 6c 69 61 73 28 22 4e 6f 64 65 22 29 5d 0d 0a  Alias("Node")]..
2120: 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d 6c 2e 58     [System.Xml.X
2130: 6d 6c 4e 6f 64 65 5b 5d 5d 24 58 6d 6c 0d 0a 2c  mlNode[]]$Xml..,
2140: 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  ..   [Parameter(
2150: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
2160: 3d 22 43 6f 6e 74 65 6e 74 22 2c 4d 61 6e 64 61  ="Content",Manda
2170: 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75 65  tory=$true,Value
2180: 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72  FromPipeline=$tr
2190: 75 65 29 5d 0d 0a 20 20 20 5b 56 61 6c 69 64 61  ue)]..   [Valida
21a0: 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79  teNotNullOrEmpty
21b0: 28 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b  ()]..   [String[
21c0: 5d 5d 24 43 6f 6e 74 65 6e 74 0d 0a 2c 0d 0a 20  ]]$Content..,.. 
21d0: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73    [Parameter(Pos
21e0: 69 74 69 6f 6e 3d 30 2c 4d 61 6e 64 61 74 6f 72  ition=0,Mandator
21f0: 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f  y=$true,ValueFro
2200: 6d 50 69 70 65 6c 69 6e 65 3d 24 66 61 6c 73 65  mPipeline=$false
2210: 29 5d 0d 0a 20 20 20 5b 56 61 6c 69 64 61 74 65  )]..   [Validate
2220: 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29  NotNullOrEmpty()
2230: 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22 51 75  ]..   [Alias("Qu
2240: 65 72 79 22 29 5d 0d 0a 20 20 20 5b 53 74 72 69  ery")]..   [Stri
2250: 6e 67 5b 5d 5d 24 58 50 61 74 68 0d 0a 2c 0d 0a  ng[]]$XPath..,..
2260: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 4d 61     [Parameter(Ma
2270: 6e 64 61 74 6f 72 79 3d 24 66 61 6c 73 65 29 5d  ndatory=$false)]
2280: 0d 0a 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  ..   [ValidateNo
2290: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
22a0: 0a 20 20 20 5b 48 61 73 68 74 61 62 6c 65 5d 24  .   [Hashtable]$
22b0: 4e 61 6d 65 73 70 61 63 65 0d 0a 2c 0d 0a 20 20  Namespace..,..  
22c0: 20 5b 53 77 69 74 63 68 5d 24 52 65 6d 6f 76 65   [Switch]$Remove
22d0: 4e 61 6d 65 73 70 61 63 65 0d 0a 29 0d 0a 42 45  Namespace..)..BE
22e0: 47 49 4e 20 7b 0d 0a 20 20 20 66 75 6e 63 74 69  GIN {..   functi
22f0: 6f 6e 20 53 65 6c 65 63 74 2d 4e 6f 64 65 20 7b  on Select-Node {
2300: 0d 0a 20 20 20 50 41 52 41 4d 28 5b 58 6d 6c 2e  ..   PARAM([Xml.
2310: 58 6d 6c 4e 6f 64 65 5d 24 58 6d 6c 2c 20 5b 53  XmlNode]$Xml, [S
2320: 74 72 69 6e 67 5b 5d 5d 24 58 50 61 74 68 2c 20  tring[]]$XPath, 
2330: 24 4e 61 6d 65 73 70 61 63 65 4d 61 6e 61 67 65  $NamespaceManage
2340: 72 29 0d 0a 20 20 20 42 45 47 49 4e 20 7b 0d 0a  r)..   BEGIN {..
2350: 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 6e        foreach($n
2360: 6f 64 65 20 69 6e 20 24 78 6d 6c 29 20 7b 0d 0a  ode in $xml) {..
2370: 20 20 20 20 20 20 20 20 20 69 66 28 24 4e 61 6d           if($Nam
2380: 65 73 70 61 63 65 4d 61 6e 61 67 65 72 20 2d 69  espaceManager -i
2390: 73 20 5b 48 61 73 68 74 61 62 6c 65 5d 29 20 7b  s [Hashtable]) {
23a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6e  ..            $n
23b0: 73 4d 61 6e 61 67 65 72 20 3d 20 6e 65 77 2d 6f  sManager = new-o
23c0: 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c  bject System.Xml
23d0: 2e 58 6d 6c 4e 61 6d 65 73 70 61 63 65 4d 61 6e  .XmlNamespaceMan
23e0: 61 67 65 72 20 24 6e 6f 64 65 2e 4e 61 6d 65 54  ager $node.NameT
23f0: 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20  able..          
2400: 20 20 66 6f 72 65 61 63 68 28 24 6e 73 20 69 6e    foreach($ns in
2410: 20 24 4e 61 6d 65 73 70 61 63 65 2e 47 65 74 45   $Namespace.GetE
2420: 6e 75 6d 65 72 61 74 6f 72 28 29 29 20 7b 0d 0a  numerator()) {..
2430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
2440: 6e 73 4d 61 6e 61 67 65 72 2e 41 64 64 4e 61 6d  nsManager.AddNam
2450: 65 73 70 61 63 65 28 20 24 6e 73 2e 4b 65 79 2c  espace( $ns.Key,
2460: 20 24 6e 73 2e 56 61 6c 75 65 20 29 0d 0a 20 20   $ns.Value )..  
2470: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2480: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2490: 20 20 66 6f 72 65 61 63 68 28 24 70 61 74 68 20    foreach($path 
24a0: 69 6e 20 24 78 70 61 74 68 29 20 7b 0d 0a 20 20  in $xpath) {..  
24b0: 20 20 20 20 20 20 20 20 20 20 24 6e 6f 64 65 2e            $node.
24c0: 53 65 6c 65 63 74 4e 6f 64 65 73 28 24 70 61 74  SelectNodes($pat
24d0: 68 2c 20 24 4e 61 6d 65 73 70 61 63 65 4d 61 6e  h, $NamespaceMan
24e0: 61 67 65 72 29 0d 0a 20 20 20 7d 20 20 7d 20 20  ager)..   }  }  
24f0: 7d 20 20 7d 0d 0a 0d 0a 20 20 20 5b 54 65 78 74  }  }....   [Text
2500: 2e 53 74 72 69 6e 67 42 75 69 6c 64 65 72 5d 24  .StringBuilder]$
2510: 58 6d 6c 43 6f 6e 74 65 6e 74 20 3d 20 5b 53 74  XmlContent = [St
2520: 72 69 6e 67 5d 3a 3a 45 6d 70 74 79 0d 0a 7d 0d  ring]::Empty..}.
2530: 0a 0d 0a 50 52 4f 43 45 53 53 20 7b 0d 0a 20 20  ...PROCESS {..  
2540: 20 24 4e 53 4d 20 3d 20 24 4e 75 6c 6c 3b 20 69   $NSM = $Null; i
2550: 66 28 24 50 53 42 6f 75 6e 64 50 61 72 61 6d 65  f($PSBoundParame
2560: 74 65 72 73 2e 43 6f 6e 74 61 69 6e 73 4b 65 79  ters.ContainsKey
2570: 28 22 4e 61 6d 65 73 70 61 63 65 22 29 29 20 7b  ("Namespace")) {
2580: 20 24 4e 53 4d 20 3d 20 24 4e 61 6d 65 73 70 61   $NSM = $Namespa
2590: 63 65 20 7d 0d 0a 0d 0a 20 20 20 73 77 69 74 63  ce }....   switc
25a0: 68 28 24 50 53 43 6d 64 6c 65 74 2e 50 61 72 61  h($PSCmdlet.Para
25b0: 6d 65 74 65 72 53 65 74 4e 61 6d 65 29 20 7b 0d  meterSetName) {.
25c0: 0a 20 20 20 20 20 20 22 43 6f 6e 74 65 6e 74 22  .      "Content"
25d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 24 6e 75   {..         $nu
25e0: 6c 6c 20 3d 20 24 58 6d 6c 43 6f 6e 74 65 6e 74  ll = $XmlContent
25f0: 2e 41 70 70 65 6e 64 4c 69 6e 65 28 20 24 43 6f  .AppendLine( $Co
2600: 6e 74 65 6e 74 20 2d 4a 6f 69 6e 20 22 60 6e 22  ntent -Join "`n"
2610: 20 29 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   )..      }..   
2620: 20 20 20 22 50 61 74 68 22 20 7b 0d 0a 20 20 20     "Path" {..   
2630: 20 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 66        foreach($f
2640: 69 6c 65 20 69 6e 20 47 65 74 2d 43 68 69 6c 64  ile in Get-Child
2650: 49 74 65 6d 20 24 50 61 74 68 29 20 7b 0d 0a 20  Item $Path) {.. 
2660: 20 20 20 20 20 20 20 20 20 20 20 5b 58 6d 6c 5d             [Xml]
2670: 24 58 6d 6c 20 3d 20 47 65 74 2d 43 6f 6e 74 65  $Xml = Get-Conte
2680: 6e 74 20 24 66 69 6c 65 0d 0a 20 20 20 20 20 20  nt $file..      
2690: 20 20 20 20 20 20 69 66 28 24 52 65 6d 6f 76 65        if($Remove
26a0: 4e 61 6d 65 73 70 61 63 65 29 20 7b 0d 0a 20 20  Namespace) {..  
26b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 58 6d               $Xm
26c0: 6c 20 3d 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61  l = Remove-XmlNa
26d0: 6d 65 73 70 61 63 65 20 24 58 6d 6c 0d 0a 20 20  mespace $Xml..  
26e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
26f0: 20 20 20 20 20 20 20 20 20 53 65 6c 65 63 74 2d           Select-
2700: 4e 6f 64 65 20 24 58 6d 6c 20 24 58 50 61 74 68  Node $Xml $XPath
2710: 20 20 24 4e 53 4d 0d 0a 20 20 20 20 20 20 20 20    $NSM..        
2720: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   }..      }..   
2730: 20 20 20 22 58 6d 6c 22 20 7b 0d 0a 20 20 20 20     "Xml" {..    
2740: 20 20 20 20 20 66 6f 72 65 61 63 68 28 24 6e 6f       foreach($no
2750: 64 65 20 69 6e 20 24 58 6d 6c 29 20 7b 0d 0a 20  de in $Xml) {.. 
2760: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 24 52             if($R
2770: 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 29 20  emoveNamespace) 
2780: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2790: 20 20 24 6e 6f 64 65 20 3d 20 52 65 6d 6f 76 65    $node = Remove
27a0: 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 24 6e  -XmlNamespace $n
27b0: 6f 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ode..           
27c0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
27d0: 53 65 6c 65 63 74 2d 4e 6f 64 65 20 24 6e 6f 64  Select-Node $nod
27e0: 65 20 24 58 50 61 74 68 20 24 4e 53 4d 0d 0a 20  e $XPath $NSM.. 
27f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2800: 20 7d 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 45 4e 44   }..   }..}..END
2810: 20 7b 0d 0a 20 20 20 69 66 28 24 50 53 43 6d 64   {..   if($PSCmd
2820: 6c 65 74 2e 50 61 72 61 6d 65 74 65 72 53 65 74  let.ParameterSet
2830: 4e 61 6d 65 20 2d 65 71 20 22 43 6f 6e 74 65 6e  Name -eq "Conten
2840: 74 22 29 20 7b 0d 0a 20 20 20 20 20 20 5b 58 6d  t") {..      [Xm
2850: 6c 5d 24 58 6d 6c 20 3d 20 24 58 6d 6c 43 6f 6e  l]$Xml = $XmlCon
2860: 74 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29 0d  tent.ToString().
2870: 0a 20 20 20 20 20 20 69 66 28 24 52 65 6d 6f 76  .      if($Remov
2880: 65 4e 61 6d 65 73 70 61 63 65 29 20 7b 0d 0a 20  eNamespace) {.. 
2890: 20 20 20 20 20 20 20 20 24 58 6d 6c 20 3d 20 52          $Xml = R
28a0: 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d 65 73 70 61  emove-XmlNamespa
28b0: 63 65 20 24 58 6d 6c 0d 0a 20 20 20 20 20 20 7d  ce $Xml..      }
28c0: 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74 2d 4e  ..      Select-N
28d0: 6f 64 65 20 24 58 6d 6c 20 24 58 50 61 74 68 20  ode $Xml $XPath 
28e0: 20 24 4e 53 4d 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a   $NSM..   }..}..
28f0: 0d 0a 7d 0d 0a 53 65 74 2d 41 6c 69 61 73 20 73  ..}..Set-Alias s
2900: 6c 78 6d 6c 20 53 65 6c 65 63 74 2d 58 6d 6c 20  lxml Select-Xml 
2910: 2d 45 41 20 30 0d 0a 0d 0a 66 75 6e 63 74 69 6f  -EA 0....functio
2920: 6e 20 43 6f 6e 76 65 72 74 2d 4e 6f 64 65 20 7b  n Convert-Node {
2930: 0d 0a 23 2e 53 79 6e 6f 70 73 69 73 20 0d 0a 23  ..#.Synopsis ..#
2940: 20 43 6f 6e 76 65 72 74 20 61 20 73 69 6e 67 6c   Convert a singl
2950: 65 20 58 4d 4c 20 4e 6f 64 65 20 76 69 61 20 58  e XML Node via X
2960: 53 4c 20 73 74 79 6c 65 73 68 65 65 74 73 0d 0a  SL stylesheets..
2970: 70 61 72 61 6d 28 0d 0a 5b 50 61 72 61 6d 65 74  param(..[Paramet
2980: 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72  er(Mandatory=$tr
2990: 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  ue,ValueFromPipe
29a0: 6c 69 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 5b 53  line=$true)]..[S
29b0: 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65 61  ystem.Xml.XmlRea
29c0: 64 65 72 5d 24 58 6d 6c 52 65 61 64 65 72 2c 0d  der]$XmlReader,.
29d0: 0a 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69  .[Parameter(Posi
29e0: 74 69 6f 6e 3d 31 2c 4d 61 6e 64 61 74 6f 72 79  tion=1,Mandatory
29f0: 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d  =$true,ValueFrom
2a00: 50 69 70 65 6c 69 6e 65 3d 24 66 61 6c 73 65 29  Pipeline=$false)
2a10: 5d 0d 0a 5b 53 79 73 74 65 6d 2e 58 6d 6c 2e 58  ]..[System.Xml.X
2a20: 73 6c 2e 58 73 6c 43 6f 6d 70 69 6c 65 64 54 72  sl.XslCompiledTr
2a30: 61 6e 73 66 6f 72 6d 5d 24 53 74 79 6c 65 53 68  ansform]$StyleSh
2a40: 65 65 74 0d 0a 29 20 0d 0a 50 52 4f 43 45 53 53  eet..) ..PROCESS
2a50: 20 7b 0d 0a 20 20 20 24 6f 75 74 70 75 74 20 3d   {..   $output =
2a60: 20 4e 65 77 2d 4f 62 6a 65 63 74 20 49 4f 2e 53   New-Object IO.S
2a70: 74 72 69 6e 67 57 72 69 74 65 72 0d 0a 20 20 20  tringWriter..   
2a80: 24 53 74 79 6c 65 53 68 65 65 74 2e 54 72 61 6e  $StyleSheet.Tran
2a90: 73 66 6f 72 6d 28 20 24 58 6d 6c 52 65 61 64 65  sform( $XmlReade
2aa0: 72 2c 20 24 6e 75 6c 6c 2c 20 24 6f 75 74 70 75  r, $null, $outpu
2ab0: 74 20 29 0d 0a 20 20 20 57 72 69 74 65 2d 4f 75  t )..   Write-Ou
2ac0: 74 70 75 74 20 24 6f 75 74 70 75 74 2e 54 6f 53  tput $output.ToS
2ad0: 74 72 69 6e 67 28 29 0d 0a 7d 0d 0a 7d 0d 0a 20  tring()..}..}.. 
2ae0: 20 20 0d 0a 66 75 6e 63 74 69 6f 6e 20 43 6f 6e    ..function Con
2af0: 76 65 72 74 2d 58 6d 6c 20 7b 0d 0a 23 2e 53 79  vert-Xml {..#.Sy
2b00: 6e 6f 70 73 69 73 0d 0a 23 20 20 54 68 65 20 43  nopsis..#  The C
2b10: 6f 6e 76 65 72 74 2d 58 4d 4c 20 66 75 6e 63 74  onvert-XML funct
2b20: 69 6f 6e 20 6c 65 74 73 20 79 6f 75 20 75 73 65  ion lets you use
2b30: 20 58 73 6c 74 20 74 6f 20 74 72 61 6e 73 66 6f   Xslt to transfo
2b40: 72 6d 20 58 4d 4c 20 73 74 72 69 6e 67 73 20 61  rm XML strings a
2b50: 6e 64 20 64 6f 63 75 6d 65 6e 74 73 2e 0d 0a 23  nd documents...#
2b60: 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 2e  .Description..#.
2b70: 50 61 72 61 6d 65 74 65 72 20 43 6f 6e 74 65 6e  Parameter Conten
2b80: 74 0d 0a 23 20 20 53 70 65 63 69 66 69 65 73 20  t..#  Specifies 
2b90: 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 6f  a string that co
2ba0: 6e 74 61 69 6e 73 20 74 68 65 20 58 4d 4c 20 74  ntains the XML t
2bb0: 6f 20 73 65 61 72 63 68 2e 20 59 6f 75 20 63 61  o search. You ca
2bc0: 6e 20 61 6c 73 6f 20 70 69 70 65 20 73 74 72 69  n also pipe stri
2bd0: 6e 67 73 20 74 6f 20 53 65 6c 65 63 74 2d 58 4d  ngs to Select-XM
2be0: 4c 2e 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72 20  L...#.Parameter 
2bf0: 4e 61 6d 65 73 70 61 63 65 0d 0a 23 20 20 20 53  Namespace..#   S
2c00: 70 65 63 69 66 69 65 73 20 61 20 68 61 73 68 20  pecifies a hash 
2c10: 74 61 62 6c 65 20 6f 66 20 74 68 65 20 6e 61 6d  table of the nam
2c20: 65 73 70 61 63 65 73 20 75 73 65 64 20 69 6e 20  espaces used in 
2c30: 74 68 65 20 58 4d 4c 2e 20 55 73 65 20 74 68 65  the XML. Use the
2c40: 20 66 6f 72 6d 61 74 20 40 7b 3c 6e 61 6d 65 73   format @{<names
2c50: 70 61 63 65 4e 61 6d 65 3e 20 3d 20 3c 6e 61 6d  paceName> = <nam
2c60: 65 73 70 61 63 65 55 72 69 3e 7d 2e 0d 0a 23 2e  espaceUri>}...#.
2c70: 50 61 72 61 6d 65 74 65 72 20 50 61 74 68 0d 0a  Parameter Path..
2c80: 23 20 20 20 53 70 65 63 69 66 69 65 73 20 74 68  #   Specifies th
2c90: 65 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20  e path and file 
2ca0: 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 58 4d 4c  names of the XML
2cb0: 20 66 69 6c 65 73 20 74 6f 20 73 65 61 72 63 68   files to search
2cc0: 2e 20 20 57 69 6c 64 63 61 72 64 73 20 61 72 65  .  Wildcards are
2cd0: 20 70 65 72 6d 69 74 74 65 64 2e 0d 0a 23 2e 50   permitted...#.P
2ce0: 61 72 61 6d 65 74 65 72 20 58 6d 6c 0d 0a 23 20  arameter Xml..# 
2cf0: 20 53 70 65 63 69 66 69 65 73 20 6f 6e 65 20 6f   Specifies one o
2d00: 72 20 6d 6f 72 65 20 58 4d 4c 20 6e 6f 64 65 73  r more XML nodes
2d10: 20 74 6f 20 73 65 61 72 63 68 2e 0d 0a 23 2e 50   to search...#.P
2d20: 61 72 61 6d 65 74 65 72 20 58 73 6c 0d 0a 23 20  arameter Xsl..# 
2d30: 20 53 70 65 63 69 66 69 65 73 20 61 6e 20 58 6d   Specifies an Xm
2d40: 6c 20 53 74 79 6c 65 53 68 65 65 74 20 74 6f 20  l StyleSheet to 
2d50: 74 72 61 6e 73 66 6f 72 6d 20 77 69 74 68 2e 2e  transform with..
2d60: 2e 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e  ...[CmdletBindin
2d70: 67 28 44 65 66 61 75 6c 74 50 61 72 61 6d 65 74  g(DefaultParamet
2d80: 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22 29  erSetName="Xml")
2d90: 5d 0d 0a 50 41 52 41 4d 28 0d 0a 20 20 20 5b 50  ]..PARAM(..   [P
2da0: 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f  arameter(Positio
2db0: 6e 3d 31 2c 50 61 72 61 6d 65 74 65 72 53 65 74  n=1,ParameterSet
2dc0: 4e 61 6d 65 3d 22 50 61 74 68 22 2c 4d 61 6e 64  Name="Path",Mand
2dd0: 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75  atory=$true,Valu
2de0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50  eFromPipelineByP
2df0: 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72 75  ropertyName=$tru
2e00: 65 29 5d 0d 0a 20 20 20 5b 56 61 6c 69 64 61 74  e)]..   [Validat
2e10: 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  eNotNullOrEmpty(
2e20: 29 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22 50  )]..   [Alias("P
2e30: 53 50 61 74 68 22 29 5d 0d 0a 20 20 20 5b 53 74  SPath")]..   [St
2e40: 72 69 6e 67 5b 5d 5d 24 50 61 74 68 0d 0a 2c 0d  ring[]]$Path..,.
2e50: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
2e60: 6f 73 69 74 69 6f 6e 3d 31 2c 50 61 72 61 6d 65  osition=1,Parame
2e70: 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22  terSetName="Xml"
2e80: 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65  ,Mandatory=$true
2e90: 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  ,ValueFromPipeli
2ea0: 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72  ne=$true,ValueFr
2eb0: 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70  omPipelineByProp
2ec0: 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d  ertyName=$true)]
2ed0: 0d 0a 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  ..   [ValidateNo
2ee0: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
2ef0: 0a 20 20 20 5b 41 6c 69 61 73 28 22 4e 6f 64 65  .   [Alias("Node
2f00: 22 29 5d 0d 0a 20 20 20 5b 53 79 73 74 65 6d 2e  ")]..   [System.
2f10: 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 5b 5d 5d 24 58  Xml.XmlNode[]]$X
2f20: 6d 6c 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d  ml..,..   [Param
2f30: 65 74 65 72 28 50 61 72 61 6d 65 74 65 72 53 65  eter(ParameterSe
2f40: 74 4e 61 6d 65 3d 22 43 6f 6e 74 65 6e 74 22 2c  tName="Content",
2f50: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c  Mandatory=$true,
2f60: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
2f70: 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b 56  e=$true)]..   [V
2f80: 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72  alidateNotNullOr
2f90: 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 5b 53 74  Empty()]..   [St
2fa0: 72 69 6e 67 5b 5d 5d 24 43 6f 6e 74 65 6e 74 0d  ring[]]$Content.
2fb0: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
2fc0: 72 28 50 6f 73 69 74 69 6f 6e 3d 30 2c 4d 61 6e  r(Position=0,Man
2fd0: 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c  datory=$true,Val
2fe0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
2ff0: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 56 61 6c  false)]..   [Val
3000: 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d  idateNotNullOrEm
3010: 70 74 79 28 29 5d 0d 0a 20 20 20 5b 41 6c 69 61  pty()]..   [Alia
3020: 73 28 22 53 74 79 6c 65 53 68 65 65 74 22 29 5d  s("StyleSheet")]
3030: 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b 5d 5d 24  ..   [String[]]$
3040: 58 73 6c 74 0d 0a 29 0d 0a 42 45 47 49 4e 20 7b  Xslt..)..BEGIN {
3050: 20 0d 0a 20 20 20 24 53 74 79 6c 65 53 68 65 65   ..   $StyleShee
3060: 74 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53  t = New-Object S
3070: 79 73 74 65 6d 2e 58 6d 6c 2e 58 73 6c 2e 58 73  ystem.Xml.Xsl.Xs
3080: 6c 43 6f 6d 70 69 6c 65 64 54 72 61 6e 73 66 6f  lCompiledTransfo
3090: 72 6d 0d 0a 20 20 20 69 66 28 54 65 73 74 2d 50  rm..   if(Test-P
30a0: 61 74 68 20 40 28 24 58 73 6c 74 29 5b 30 5d 20  ath @($Xslt)[0] 
30b0: 2d 45 41 20 30 29 20 7b 20 0d 0a 20 20 20 20 20  -EA 0) { ..     
30c0: 20 57 72 69 74 65 2d 56 65 72 62 6f 73 65 20 22   Write-Verbose "
30d0: 4c 6f 61 64 69 6e 67 20 53 74 79 6c 65 73 68 65  Loading Styleshe
30e0: 65 74 20 66 72 6f 6d 20 24 28 52 65 73 6f 6c 76  et from $(Resolv
30f0: 65 2d 50 61 74 68 20 40 28 24 58 73 6c 74 29 5b  e-Path @($Xslt)[
3100: 30 5d 29 22 0d 0a 20 20 20 20 20 20 24 53 74 79  0])"..      $Sty
3110: 6c 65 53 68 65 65 74 2e 4c 6f 61 64 28 20 28 52  leSheet.Load( (R
3120: 65 73 6f 6c 76 65 2d 50 61 74 68 20 40 28 24 58  esolve-Path @($X
3130: 73 6c 74 29 5b 30 5d 29 20 29 0d 0a 20 20 20 7d  slt)[0]) )..   }
3140: 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 57   else {..      W
3150: 72 69 74 65 2d 56 65 72 62 6f 73 65 20 22 24 58  rite-Verbose "$X
3160: 73 6c 74 22 0d 0a 20 20 20 20 20 20 24 53 74 79  slt"..      $Sty
3170: 6c 65 53 68 65 65 74 2e 4c 6f 61 64 28 28 5b 53  leSheet.Load(([S
3180: 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65 61  ystem.Xml.XmlRea
3190: 64 65 72 5d 3a 3a 43 72 65 61 74 65 28 28 4e 65  der]::Create((Ne
31a0: 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e  w-Object System.
31b0: 49 4f 2e 53 74 72 69 6e 67 52 65 61 64 65 72 20  IO.StringReader 
31c0: 28 24 58 73 6c 74 20 2d 6a 6f 69 6e 20 22 60 6e  ($Xslt -join "`n
31d0: 22 29 29 29 29 29 0d 0a 20 20 20 7d 0d 0a 20 20  ")))))..   }..  
31e0: 20 5b 54 65 78 74 2e 53 74 72 69 6e 67 42 75 69   [Text.StringBui
31f0: 6c 64 65 72 5d 24 58 6d 6c 43 6f 6e 74 65 6e 74  lder]$XmlContent
3200: 20 3d 20 5b 53 74 72 69 6e 67 5d 3a 3a 45 6d 70   = [String]::Emp
3210: 74 79 20 0d 0a 7d 0d 0a 50 52 4f 43 45 53 53 20  ty ..}..PROCESS 
3220: 7b 0d 0a 20 20 20 73 77 69 74 63 68 28 24 50 53  {..   switch($PS
3230: 43 6d 64 6c 65 74 2e 50 61 72 61 6d 65 74 65 72  Cmdlet.Parameter
3240: 53 65 74 4e 61 6d 65 29 20 7b 0d 0a 20 20 20 20  SetName) {..    
3250: 20 20 22 43 6f 6e 74 65 6e 74 22 20 7b 0d 0a 20    "Content" {.. 
3260: 20 20 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d 20          $null = 
3270: 24 58 6d 6c 43 6f 6e 74 65 6e 74 2e 41 70 70 65  $XmlContent.Appe
3280: 6e 64 4c 69 6e 65 28 20 24 43 6f 6e 74 65 6e 74  ndLine( $Content
3290: 20 2d 4a 6f 69 6e 20 22 60 6e 22 20 29 0d 0a 20   -Join "`n" ).. 
32a0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 22 50       }..      "P
32b0: 61 74 68 22 20 7b 0d 0a 20 20 20 20 20 20 20 20  ath" {..        
32c0: 20 66 6f 72 65 61 63 68 28 24 66 69 6c 65 20 69   foreach($file i
32d0: 6e 20 47 65 74 2d 43 68 69 6c 64 49 74 65 6d 20  n Get-ChildItem 
32e0: 24 50 61 74 68 29 20 7b 0d 0a 20 20 20 20 20 20  $Path) {..      
32f0: 20 20 20 20 20 20 43 6f 6e 76 65 72 74 2d 4e 6f        Convert-No
3300: 64 65 20 2d 58 6d 6c 20 28 5b 53 79 73 74 65 6d  de -Xml ([System
3310: 2e 58 6d 6c 2e 58 6d 6c 52 65 61 64 65 72 5d 3a  .Xml.XmlReader]:
3320: 3a 43 72 65 61 74 65 28 28 52 65 73 6f 6c 76 65  :Create((Resolve
3330: 2d 50 61 74 68 20 24 66 69 6c 65 29 29 29 20 24  -Path $file))) $
3340: 53 74 79 6c 65 53 68 65 65 74 0d 0a 20 20 20 20  StyleSheet..    
3350: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d       }..      }.
3360: 0a 20 20 20 20 20 20 22 58 6d 6c 22 20 7b 0d 0a  .      "Xml" {..
3370: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
3380: 28 24 6e 6f 64 65 20 69 6e 20 24 58 6d 6c 29 20  ($node in $Xml) 
3390: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
33a0: 6f 6e 76 65 72 74 2d 4e 6f 64 65 20 2d 58 6d 6c  onvert-Node -Xml
33b0: 20 28 4e 65 77 2d 4f 62 6a 65 63 74 20 58 6d 6c   (New-Object Xml
33c0: 2e 58 6d 6c 4e 6f 64 65 52 65 61 64 65 72 20 24  .XmlNodeReader $
33d0: 6e 6f 64 65 29 20 24 53 74 79 6c 65 53 68 65 65  node) $StyleShee
33e0: 74 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  t..         }.. 
33f0: 20 20 20 20 20 7d 0d 0a 20 20 20 7d 0d 0a 7d 0d       }..   }..}.
3400: 0a 45 4e 44 20 7b 0d 0a 20 20 20 69 66 28 24 50  .END {..   if($P
3410: 53 43 6d 64 6c 65 74 2e 50 61 72 61 6d 65 74 65  SCmdlet.Paramete
3420: 72 53 65 74 4e 61 6d 65 20 2d 65 71 20 22 43 6f  rSetName -eq "Co
3430: 6e 74 65 6e 74 22 29 20 7b 0d 0a 20 20 20 20 20  ntent") {..     
3440: 20 5b 58 6d 6c 5d 24 58 6d 6c 20 3d 20 24 58 6d   [Xml]$Xml = $Xm
3450: 6c 43 6f 6e 74 65 6e 74 2e 54 6f 53 74 72 69 6e  lContent.ToStrin
3460: 67 28 29 0d 0a 20 20 20 20 20 20 43 6f 6e 76 65  g()..      Conve
3470: 72 74 2d 4e 6f 64 65 20 2d 58 6d 6c 20 24 58 6d  rt-Node -Xml $Xm
3480: 6c 20 24 53 74 79 6c 65 53 68 65 65 74 0d 0a 20  l $StyleSheet.. 
3490: 20 20 7d 0d 0a 7d 0d 0a 7d 0d 0a 53 65 74 2d 41    }..}..}..Set-A
34a0: 6c 69 61 73 20 63 76 78 6d 6c 20 43 6f 6e 76 65  lias cvxml Conve
34b0: 72 74 2d 58 6d 6c 20 2d 45 41 20 30 0d 0a 0d 0a  rt-Xml -EA 0....
34c0: 66 75 6e 63 74 69 6f 6e 20 52 65 6d 6f 76 65 2d  function Remove-
34d0: 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 7b 0d 0a  XmlNamespace {..
34e0: 23 2e 53 79 6e 6f 70 73 69 73 0d 0a 23 20 20 52  #.Synopsis..#  R
34f0: 65 6d 6f 76 65 73 20 6e 61 6d 65 73 70 61 63 65  emoves namespace
3500: 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64   definitions and
3510: 20 70 72 65 66 69 78 65 73 20 66 72 6f 6d 20 78   prefixes from x
3520: 6d 6c 20 64 6f 63 75 6d 65 6e 74 73 0d 0a 23 2e  ml documents..#.
3530: 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20 20  Description..#  
3540: 52 75 6e 73 20 61 6e 20 78 6d 6c 20 64 6f 63 75  Runs an xml docu
3550: 6d 65 6e 74 20 74 68 72 6f 75 67 68 20 61 6e 20  ment through an 
3560: 58 53 4c 20 54 72 61 6e 73 66 6f 72 6d 61 74 69  XSL Transformati
3570: 6f 6e 20 74 6f 20 72 65 6d 6f 76 65 20 6e 61 6d  on to remove nam
3580: 65 73 70 61 63 65 73 20 66 72 6f 6d 20 69 74 20  espaces from it 
3590: 69 66 20 74 68 65 79 20 65 78 69 73 74 2e 0d 0a  if they exist...
35a0: 23 20 20 45 6e 74 69 74 69 65 73 20 61 72 65 20  #  Entities are 
35b0: 61 6c 73 6f 20 6e 61 74 75 72 61 6c 6c 79 20 65  also naturally e
35c0: 78 70 61 6e 64 65 64 0d 0a 23 2e 50 61 72 61 6d  xpanded..#.Param
35d0: 65 74 65 72 20 43 6f 6e 74 65 6e 74 0d 0a 23 20  eter Content..# 
35e0: 20 53 70 65 63 69 66 69 65 73 20 61 20 73 74 72   Specifies a str
35f0: 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ing that contain
3600: 73 20 74 68 65 20 58 4d 4c 20 74 6f 20 74 72 61  s the XML to tra
3610: 6e 73 66 6f 72 6d 2e 0d 0a 23 2e 50 61 72 61 6d  nsform...#.Param
3620: 65 74 65 72 20 50 61 74 68 0d 0a 23 20 20 53 70  eter Path..#  Sp
3630: 65 63 69 66 69 65 73 20 74 68 65 20 70 61 74 68  ecifies the path
3640: 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 73 20   and file names 
3650: 6f 66 20 74 68 65 20 58 4d 4c 20 66 69 6c 65 73  of the XML files
3660: 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d 2e 20 57   to transform. W
3670: 69 6c 64 63 61 72 64 73 20 61 72 65 20 70 65 72  ildcards are per
3680: 6d 69 74 74 65 64 2e 0d 0a 23 0d 0a 23 20 20 54  mitted...#..#  T
3690: 68 65 72 65 20 77 69 6c 6c 20 62 6e 65 20 6f 6e  here will bne on
36a0: 65 20 6f 75 74 70 75 74 20 64 6f 63 75 6d 65 6e  e output documen
36b0: 74 20 66 6f 72 20 65 61 63 68 20 6d 61 74 63 68  t for each match
36c0: 69 6e 67 20 69 6e 70 75 74 20 66 69 6c 65 2e 0d  ing input file..
36d0: 0a 23 2e 50 61 72 61 6d 65 74 65 72 20 58 6d 6c  .#.Parameter Xml
36e0: 0d 0a 23 20 20 53 70 65 63 69 66 69 65 73 20 6f  ..#  Specifies o
36f0: 6e 65 20 6f 72 20 6d 6f 72 65 20 58 4d 4c 20 64  ne or more XML d
3700: 6f 63 75 6d 65 6e 74 73 20 74 6f 20 74 72 61 6e  ocuments to tran
3710: 73 66 6f 72 6d 0d 0a 5b 43 6d 64 6c 65 74 42 69  sform..[CmdletBi
3720: 6e 64 69 6e 67 28 44 65 66 61 75 6c 74 50 61 72  nding(DefaultPar
3730: 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 58  ameterSetName="X
3740: 6d 6c 22 29 5d 0d 0a 50 41 52 41 4d 28 0d 0a 20  ml")]..PARAM(.. 
3750: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73    [Parameter(Pos
3760: 69 74 69 6f 6e 3d 31 2c 50 61 72 61 6d 65 74 65  ition=1,Paramete
3770: 72 53 65 74 4e 61 6d 65 3d 22 50 61 74 68 22 2c  rSetName="Path",
3780: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c  Mandatory=$true,
3790: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
37a0: 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d  eByPropertyName=
37b0: 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b 56 61 6c  $true)]..   [Val
37c0: 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d  idateNotNullOrEm
37d0: 70 74 79 28 29 5d 0d 0a 20 20 20 5b 41 6c 69 61  pty()]..   [Alia
37e0: 73 28 22 50 53 50 61 74 68 22 29 5d 0d 0a 20 20  s("PSPath")]..  
37f0: 20 5b 53 74 72 69 6e 67 5b 5d 5d 24 50 61 74 68   [String[]]$Path
3800: 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  ..,..   [Paramet
3810: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c 50 61  er(Position=1,Pa
3820: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22  rameterSetName="
3830: 58 6d 6c 22 2c 4d 61 6e 64 61 74 6f 72 79 3d 24  Xml",Mandatory=$
3840: 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69  true,ValueFromPi
3850: 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c  peline=$true,Val
3860: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79  ueFromPipelineBy
3870: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72  PropertyName=$tr
3880: 75 65 29 5d 0d 0a 20 20 20 5b 56 61 6c 69 64 61  ue)]..   [Valida
3890: 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79  teNotNullOrEmpty
38a0: 28 29 5d 0d 0a 20 20 20 5b 41 6c 69 61 73 28 22  ()]..   [Alias("
38b0: 4e 6f 64 65 22 29 5d 0d 0a 20 20 20 5b 53 79 73  Node")]..   [Sys
38c0: 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 5b  tem.Xml.XmlNode[
38d0: 5d 5d 24 58 6d 6c 0d 0a 2c 0d 0a 20 20 20 5b 50  ]]$Xml..,..   [P
38e0: 61 72 61 6d 65 74 65 72 28 50 61 72 61 6d 65 74  arameter(Paramet
38f0: 65 72 53 65 74 4e 61 6d 65 3d 22 43 6f 6e 74 65  erSetName="Conte
3900: 6e 74 22 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74  nt",Mandatory=$t
3910: 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70  rue,ValueFromPip
3920: 65 6c 69 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20  eline=$true)].. 
3930: 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75    [ValidateNotNu
3940: 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20  llOrEmpty()]..  
3950: 20 5b 53 74 72 69 6e 67 5b 5d 5d 24 43 6f 6e 74   [String[]]$Cont
3960: 65 6e 74 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61  ent..,..   [Para
3970: 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30  meter(Position=0
3980: 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65  ,Mandatory=$true
3990: 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  ,ValueFromPipeli
39a0: 6e 65 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20  ne=$false)]..   
39b0: 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  [ValidateNotNull
39c0: 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 5b  OrEmpty()]..   [
39d0: 41 6c 69 61 73 28 22 53 74 79 6c 65 53 68 65 65  Alias("StyleShee
39e0: 74 22 29 5d 0d 0a 20 20 20 5b 53 74 72 69 6e 67  t")]..   [String
39f0: 5b 5d 5d 24 58 73 6c 74 0d 0a 29 0d 0a 42 45 47  []]$Xslt..)..BEG
3a00: 49 4e 20 7b 20 0d 0a 20 20 20 24 53 74 79 6c 65  IN { ..   $Style
3a10: 53 68 65 65 74 20 3d 20 4e 65 77 2d 4f 62 6a 65  Sheet = New-Obje
3a20: 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 73  ct System.Xml.Xs
3a30: 6c 2e 58 73 6c 43 6f 6d 70 69 6c 65 64 54 72 61  l.XslCompiledTra
3a40: 6e 73 66 6f 72 6d 0d 0a 20 20 20 24 53 74 79 6c  nsform..   $Styl
3a50: 65 53 68 65 65 74 2e 4c 6f 61 64 28 28 5b 53 79  eSheet.Load(([Sy
3a60: 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65 61 64  stem.Xml.XmlRead
3a70: 65 72 5d 3a 3a 43 72 65 61 74 65 28 28 4e 65 77  er]::Create((New
3a80: 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 49  -Object System.I
3a90: 4f 2e 53 74 72 69 6e 67 52 65 61 64 65 72 20 40  O.StringReader @
3aa0: 22 0d 0a 3c 78 73 6c 3a 73 74 79 6c 65 73 68 65  "..<xsl:styleshe
3ab0: 65 74 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22  et version="1.0"
3ac0: 20 78 6d 6c 6e 73 3a 78 73 6c 3d 22 68 74 74 70   xmlns:xsl="http
3ad0: 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39  ://www.w3.org/19
3ae0: 39 39 2f 58 53 4c 2f 54 72 61 6e 73 66 6f 72 6d  99/XSL/Transform
3af0: 22 3e 0d 0a 20 20 20 3c 78 73 6c 3a 6f 75 74 70  ">..   <xsl:outp
3b00: 75 74 20 6d 65 74 68 6f 64 3d 22 78 6d 6c 22 20  ut method="xml" 
3b10: 69 6e 64 65 6e 74 3d 22 79 65 73 22 2f 3e 0d 0a  indent="yes"/>..
3b20: 20 20 20 3c 78 73 6c 3a 74 65 6d 70 6c 61 74 65     <xsl:template
3b30: 20 6d 61 74 63 68 3d 22 2f 7c 63 6f 6d 6d 65 6e   match="/|commen
3b40: 74 28 29 7c 70 72 6f 63 65 73 73 69 6e 67 2d 69  t()|processing-i
3b50: 6e 73 74 72 75 63 74 69 6f 6e 28 29 22 3e 0d 0a  nstruction()">..
3b60: 20 20 20 20 20 20 3c 78 73 6c 3a 63 6f 70 79 3e        <xsl:copy>
3b70: 0d 0a 20 20 20 20 20 20 20 20 20 3c 78 73 6c 3a  ..         <xsl:
3b80: 61 70 70 6c 79 2d 74 65 6d 70 6c 61 74 65 73 2f  apply-templates/
3b90: 3e 0d 0a 20 20 20 20 20 20 3c 2f 78 73 6c 3a 63  >..      </xsl:c
3ba0: 6f 70 79 3e 0d 0a 20 20 20 3c 2f 78 73 6c 3a 74  opy>..   </xsl:t
3bb0: 65 6d 70 6c 61 74 65 3e 0d 0a 0d 0a 20 20 20 3c  emplate>....   <
3bc0: 78 73 6c 3a 74 65 6d 70 6c 61 74 65 20 6d 61 74  xsl:template mat
3bd0: 63 68 3d 22 2a 22 3e 0d 0a 20 20 20 20 20 20 3c  ch="*">..      <
3be0: 78 73 6c 3a 65 6c 65 6d 65 6e 74 20 6e 61 6d 65  xsl:element name
3bf0: 3d 22 7b 6c 6f 63 61 6c 2d 6e 61 6d 65 28 29 7d  ="{local-name()}
3c00: 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 3c 78 73  ">..         <xs
3c10: 6c 3a 61 70 70 6c 79 2d 74 65 6d 70 6c 61 74 65  l:apply-template
3c20: 73 20 73 65 6c 65 63 74 3d 22 40 2a 7c 6e 6f 64  s select="@*|nod
3c30: 65 28 29 22 2f 3e 0d 0a 20 20 20 20 20 20 3c 2f  e()"/>..      </
3c40: 78 73 6c 3a 65 6c 65 6d 65 6e 74 3e 0d 0a 20 20  xsl:element>..  
3c50: 20 3c 2f 78 73 6c 3a 74 65 6d 70 6c 61 74 65 3e   </xsl:template>
3c60: 0d 0a 0d 0a 20 20 20 3c 78 73 6c 3a 74 65 6d 70  ....   <xsl:temp
3c70: 6c 61 74 65 20 6d 61 74 63 68 3d 22 40 2a 22 3e  late match="@*">
3c80: 0d 0a 20 20 20 20 20 20 3c 78 73 6c 3a 61 74 74  ..      <xsl:att
3c90: 72 69 62 75 74 65 20 6e 61 6d 65 3d 22 7b 6c 6f  ribute name="{lo
3ca0: 63 61 6c 2d 6e 61 6d 65 28 29 7d 22 3e 0d 0a 20  cal-name()}">.. 
3cb0: 20 20 20 20 20 20 20 20 3c 78 73 6c 3a 76 61 6c          <xsl:val
3cc0: 75 65 2d 6f 66 20 73 65 6c 65 63 74 3d 22 2e 22  ue-of select="."
3cd0: 2f 3e 0d 0a 20 20 20 20 20 20 3c 2f 78 73 6c 3a  />..      </xsl:
3ce0: 61 74 74 72 69 62 75 74 65 3e 0d 0a 20 20 20 3c  attribute>..   <
3cf0: 2f 78 73 6c 3a 74 65 6d 70 6c 61 74 65 3e 0d 0a  /xsl:template>..
3d00: 3c 2f 78 73 6c 3a 73 74 79 6c 65 73 68 65 65 74  </xsl:stylesheet
3d10: 3e 0d 0a 22 40 29 29 29 29 0d 0a 20 20 20 5b 54  >.."@))))..   [T
3d20: 65 78 74 2e 53 74 72 69 6e 67 42 75 69 6c 64 65  ext.StringBuilde
3d30: 72 5d 24 58 6d 6c 43 6f 6e 74 65 6e 74 20 3d 20  r]$XmlContent = 
3d40: 5b 53 74 72 69 6e 67 5d 3a 3a 45 6d 70 74 79 20  [String]::Empty 
3d50: 0d 0a 7d 0d 0a 50 52 4f 43 45 53 53 20 7b 0d 0a  ..}..PROCESS {..
3d60: 20 20 20 73 77 69 74 63 68 28 24 50 53 43 6d 64     switch($PSCmd
3d70: 6c 65 74 2e 50 61 72 61 6d 65 74 65 72 53 65 74  let.ParameterSet
3d80: 4e 61 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 22  Name) {..      "
3d90: 43 6f 6e 74 65 6e 74 22 20 7b 0d 0a 20 20 20 20  Content" {..    
3da0: 20 20 20 20 20 24 6e 75 6c 6c 20 3d 20 24 58 6d       $null = $Xm
3db0: 6c 43 6f 6e 74 65 6e 74 2e 41 70 70 65 6e 64 4c  lContent.AppendL
3dc0: 69 6e 65 28 20 24 43 6f 6e 74 65 6e 74 20 2d 4a  ine( $Content -J
3dd0: 6f 69 6e 20 22 60 6e 22 20 29 0d 0a 20 20 20 20  oin "`n" )..    
3de0: 20 20 7d 0d 0a 20 20 20 20 20 20 22 50 61 74 68    }..      "Path
3df0: 22 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 66 6f  " {..         fo
3e00: 72 65 61 63 68 28 24 66 69 6c 65 20 69 6e 20 47  reach($file in G
3e10: 65 74 2d 43 68 69 6c 64 49 74 65 6d 20 24 50 61  et-ChildItem $Pa
3e20: 74 68 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  th) {..         
3e30: 20 20 20 5b 58 6d 6c 5d 24 58 6d 6c 20 3d 20 47     [Xml]$Xml = G
3e40: 65 74 2d 43 6f 6e 74 65 6e 74 20 24 66 69 6c 65  et-Content $file
3e50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f  ..            Co
3e60: 6e 76 65 72 74 2d 4e 6f 64 65 20 2d 58 6d 6c 20  nvert-Node -Xml 
3e70: 24 58 6d 6c 20 24 53 74 79 6c 65 53 68 65 65 74  $Xml $StyleSheet
3e80: 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ..         }..  
3e90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 22 58 6d      }..      "Xm
3ea0: 6c 22 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 24  l" {..         $
3eb0: 58 6d 6c 20 7c 20 43 6f 6e 76 65 72 74 2d 4e 6f  Xml | Convert-No
3ec0: 64 65 20 24 53 74 79 6c 65 53 68 65 65 74 0d 0a  de $StyleSheet..
3ed0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 7d 0d 0a 7d        }..   }..}
3ee0: 0d 0a 45 4e 44 20 7b 0d 0a 20 20 20 69 66 28 24  ..END {..   if($
3ef0: 50 53 43 6d 64 6c 65 74 2e 50 61 72 61 6d 65 74  PSCmdlet.Paramet
3f00: 65 72 53 65 74 4e 61 6d 65 20 2d 65 71 20 22 43  erSetName -eq "C
3f10: 6f 6e 74 65 6e 74 22 29 20 7b 0d 0a 20 20 20 20  ontent") {..    
3f20: 20 20 5b 58 6d 6c 5d 24 58 6d 6c 20 3d 20 24 58    [Xml]$Xml = $X
3f30: 6d 6c 43 6f 6e 74 65 6e 74 2e 54 6f 53 74 72 69  mlContent.ToStri
3f40: 6e 67 28 29 0d 0a 20 20 20 20 20 20 43 6f 6e 76  ng()..      Conv
3f50: 65 72 74 2d 4e 6f 64 65 20 2d 58 6d 6c 20 24 58  ert-Node -Xml $X
3f60: 6d 6c 20 24 53 74 79 6c 65 53 68 65 65 74 0d 0a  ml $StyleSheet..
3f70: 20 20 20 7d 0d 0a 7d 0d 0a 7d 0d 0a 53 65 74 2d     }..}..}..Set-
3f80: 41 6c 69 61 73 20 72 6d 6e 73 20 52 65 6d 6f 76  Alias rmns Remov
3f90: 65 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 2d  e-XmlNamespace -
3fa0: 45 41 20 30 0d 0a 0d 0a 0d 0a 0d 0a 66 75 6e 63  EA 0........func
3fb0: 74 69 6f 6e 20 4e 65 77 2d 58 44 6f 63 75 6d 65  tion New-XDocume
3fc0: 6e 74 20 7b 0d 0a 23 2e 53 79 6e 6f 70 73 69 73  nt {..#.Synopsis
3fd0: 0d 0a 23 20 20 20 43 72 65 61 74 65 73 20 61 20  ..#   Creates a 
3fe0: 6e 65 77 20 58 44 6f 63 75 6d 65 6e 74 20 28 74  new XDocument (t
3ff0: 68 65 20 6e 65 77 20 78 6d 6c 20 64 6f 63 75 6d  he new xml docum
4000: 65 6e 74 20 74 79 70 65 29 0d 0a 23 2e 44 65 73  ent type)..#.Des
4010: 63 72 69 70 74 69 6f 6e 0d 0a 23 20 20 54 68 69  cription..#  Thi
4020: 73 20 69 73 20 74 68 65 20 72 6f 6f 74 20 66 6f  s is the root fo
4030: 72 20 61 20 6e 65 77 20 58 4d 4c 20 6d 69 6e 69  r a new XML mini
4040: 2d 64 73 6c 2c 20 61 6b 69 6e 20 74 6f 20 4e 65  -dsl, akin to Ne
4050: 77 2d 42 6f 6f 74 73 57 69 6e 64 6f 77 20 66 6f  w-BootsWindow fo
4060: 72 20 58 41 4d 4c 0d 0a 23 20 20 49 74 20 63 72  r XAML..#  It cr
4070: 65 61 74 65 73 20 61 20 6e 65 77 20 58 44 6f 63  eates a new XDoc
4080: 75 6d 65 6e 74 2c 20 61 6e 64 20 74 61 6b 65 73  ument, and takes
4090: 20 73 63 72 69 74 70 62 6c 6f 63 6b 28 73 29 20   scritpblock(s) 
40a0: 74 6f 20 64 65 66 69 6e 65 20 69 74 27 73 20 63  to define it's c
40b0: 6f 6e 74 65 6e 74 73 0d 0a 23 2e 50 61 72 61 6d  ontents..#.Param
40c0: 65 74 65 72 20 72 6f 6f 74 0d 0a 23 20 20 20 54  eter root..#   T
40d0: 68 65 20 72 6f 6f 74 20 6e 6f 64 65 20 6e 61 6d  he root node nam
40e0: 65 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72 20 76  e..#.Parameter v
40f0: 65 72 73 69 6f 6e 0d 0a 23 20 20 20 4f 70 74 69  ersion..#   Opti
4100: 6f 6e 61 6c 3a 20 74 68 65 20 58 4d 4c 20 76 65  onal: the XML ve
4110: 72 73 69 6f 6e 2e 20 44 65 66 61 75 6c 74 73 20  rsion. Defaults 
4120: 74 6f 20 31 2e 30 0d 0a 23 2e 50 61 72 61 6d 65  to 1.0..#.Parame
4130: 74 65 72 20 65 6e 63 6f 64 69 6e 67 0d 0a 23 20  ter encoding..# 
4140: 20 20 4f 70 74 69 6f 6e 61 6c 3a 20 74 68 65 20    Optional: the 
4150: 45 6e 63 6f 64 69 6e 67 2e 20 44 65 66 61 75 6c  Encoding. Defaul
4160: 74 73 20 74 6f 20 55 54 46 2d 38 0d 0a 23 2e 50  ts to UTF-8..#.P
4170: 61 72 61 6d 65 74 65 72 20 73 74 61 6e 64 61 6c  arameter standal
4180: 6f 6e 65 0d 0a 23 20 20 4f 70 74 69 6f 6e 61 6c  one..#  Optional
4190: 3a 20 77 68 65 74 68 65 72 20 74 6f 20 73 70 65  : whether to spe
41a0: 63 69 66 79 20 73 74 61 6e 64 61 6c 6f 6e 65 20  cify standalone 
41b0: 69 6e 20 74 68 65 20 78 6d 6c 20 64 65 63 6c 61  in the xml decla
41c0: 72 61 74 69 6f 6e 2e 20 44 65 66 61 75 6c 74 73  ration. Defaults
41d0: 20 74 6f 20 22 79 65 73 22 0d 0a 23 2e 50 61 72   to "yes"..#.Par
41e0: 61 6d 65 74 65 72 20 61 72 67 73 0d 0a 23 20 20  ameter args..#  
41f0: 20 74 68 69 73 20 69 73 20 77 68 65 72 65 20 61   this is where a
4200: 6c 6c 20 74 68 65 20 64 73 6c 20 6d 61 67 69 63  ll the dsl magic
4210: 20 68 61 70 70 65 6e 73 2e 20 50 6c 65 61 73 65   happens. Please
4220: 20 73 65 65 20 74 68 65 20 45 78 61 6d 70 6c 65   see the Example
4230: 73 2e 20 3a 29 0d 0a 23 0d 0a 23 2e 45 78 61 6d  s. :)..#..#.Exam
4240: 70 6c 65 0d 0a 23 20 5b 73 74 72 69 6e 67 5d 24  ple..# [string]$
4250: 78 6d 6c 20 3d 20 4e 65 77 2d 58 44 6f 63 75 6d  xml = New-XDocum
4260: 65 6e 74 20 72 73 73 20 2d 76 65 72 73 69 6f 6e  ent rss -version
4270: 20 22 32 2e 30 22 20 7b 0d 0a 23 20 20 20 20 63   "2.0" {..#    c
4280: 68 61 6e 6e 65 6c 20 7b 0d 0a 23 20 20 20 20 20  hannel {..#     
4290: 20 20 74 69 74 6c 65 20 7b 22 54 65 73 74 20 52    title {"Test R
42a0: 53 53 20 46 65 65 64 22 7d 0d 0a 23 20 20 20 20  SS Feed"}..#    
42b0: 20 20 20 6c 69 6e 6b 20 7b 22 68 74 74 70 60 3a     link {"http`:
42c0: 2f 2f 48 75 64 64 6c 65 64 4d 61 73 73 65 73 2e  //HuddledMasses.
42d0: 6f 72 67 22 7d 0d 0a 23 20 20 20 20 20 20 20 64  org"}..#       d
42e0: 65 73 63 72 69 70 74 69 6f 6e 20 7b 22 41 6e 20  escription {"An 
42f0: 52 53 53 20 46 65 65 64 20 67 65 6e 65 72 61 74  RSS Feed generat
4300: 65 64 20 73 69 6d 70 6c 79 20 74 6f 20 64 65 6d  ed simply to dem
4310: 6f 6e 73 74 72 61 74 65 20 6d 79 20 58 4d 4c 20  onstrate my XML 
4320: 44 53 4c 22 7d 0d 0a 23 20 20 20 20 20 20 20 69  DSL"}..#       i
4330: 74 65 6d 20 7b 0d 0a 23 20 20 20 20 20 20 20 20  tem {..#        
4340: 20 20 74 69 74 6c 65 20 7b 22 54 68 65 20 46 69    title {"The Fi
4350: 72 73 74 20 49 74 65 6d 22 7d 0d 0a 23 20 20 20  rst Item"}..#   
4360: 20 20 20 20 20 20 20 6c 69 6e 6b 20 7b 22 68 74         link {"ht
4370: 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73  tp`://huddledmas
4380: 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69 74 65  ses.org/new-site
4390: 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73 74  -new-layout-lost
43a0: 2d 70 6f 73 74 73 2f 22 7d 0d 0a 23 20 20 20 20  -posts/"}..#    
43b0: 20 20 20 20 20 20 67 75 69 64 20 2d 69 73 50 65        guid -isPe
43c0: 72 6d 61 4c 69 6e 6b 20 74 72 75 65 20 7b 22 68  rmaLink true {"h
43d0: 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64 6d 61  ttp`://huddledma
43e0: 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69 74  sses.org/new-sit
43f0: 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73  e-new-layout-los
4400: 74 2d 70 6f 73 74 73 2f 22 7d 0d 0a 23 20 20 20  t-posts/"}..#   
4410: 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 69         descripti
4420: 6f 6e 20 7b 22 45 6d 61 20 4c 61 7a 61 72 75 73  on {"Ema Lazarus
4430: 27 20 50 6f 65 6d 22 7d 0d 0a 23 20 20 20 20 20  ' Poem"}..#     
4440: 20 20 20 20 20 70 75 62 44 61 74 65 20 7b 28 47       pubDate {(G
4450: 65 74 2d 44 61 74 65 20 31 30 2f 33 31 2f 32 30  et-Date 10/31/20
4460: 30 33 20 2d 66 20 75 29 20 2d 72 65 70 6c 61 63  03 -f u) -replac
4470: 65 20 22 20 22 2c 22 54 22 7d 0d 0a 23 20 20 20  e " ","T"}..#   
4480: 20 20 20 20 7d 0d 0a 23 20 20 20 20 7d 0d 0a 23      }..#    }..#
4490: 20 7d 0d 0a 23 0d 0a 23 20 43 3a 5c 50 53 3e 24   }..#..# C:\PS>$
44a0: 78 6d 6c 2e 44 65 63 6c 61 72 61 74 69 6f 6e 2e  xml.Declaration.
44b0: 54 6f 53 74 72 69 6e 67 28 29 20 20 23 23 20 49  ToString()  ## I
44c0: 20 63 61 6e 27 74 20 66 69 6e 64 20 61 20 77 61   can't find a wa
44d0: 79 20 74 6f 20 68 61 76 65 20 74 68 69 73 20 69  y to have this i
44e0: 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 24  ncluded in the $
44f0: 78 6d 6c 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a  xml.ToString()..
4500: 23 20 43 3a 5c 50 53 3e 24 78 6d 6c 2e 54 6f 53  # C:\PS>$xml.ToS
4510: 74 72 69 6e 67 28 29 0d 0a 23 0d 0a 23 20 3c 3f  tring()..#..# <?
4520: 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30  xml version="1.0
4530: 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d  " encoding="UTF-
4540: 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 79  8" standalone="y
4550: 65 73 22 3f 3e 0d 0a 23 20 3c 72 73 73 20 76 65  es"?>..# <rss ve
4560: 72 73 69 6f 6e 3d 22 32 2e 30 22 3e 0d 0a 23 20  rsion="2.0">..# 
4570: 20 20 3c 63 68 61 6e 6e 65 6c 3e 0d 0a 23 20 20    <channel>..#  
4580: 20 20 20 3c 74 69 74 6c 65 3e 54 65 73 74 20 52     <title>Test R
4590: 53 53 20 46 65 65 64 3c 2f 74 69 74 6c 65 3e 0d  SS Feed</title>.
45a0: 0a 23 20 20 20 20 20 3c 6c 69 6e 6b 3e 68 74 74  .#     <link>htt
45b0: 70 20 3a 2f 2f 48 75 64 64 6c 65 64 4d 61 73 73  p ://HuddledMass
45c0: 65 73 2e 6f 72 67 3c 2f 6c 69 6e 6b 3e 0d 0a 23  es.org</link>..#
45d0: 20 20 20 20 20 3c 64 65 73 63 72 69 70 74 69 6f       <descriptio
45e0: 6e 3e 41 6e 20 52 53 53 20 46 65 65 64 20 67 65  n>An RSS Feed ge
45f0: 6e 65 72 61 74 65 64 20 73 69 6d 70 6c 79 20 74  nerated simply t
4600: 6f 20 64 65 6d 6f 6e 73 74 72 61 74 65 20 6d 79  o demonstrate my
4610: 20 58 4d 4c 20 44 53 4c 3c 2f 64 65 73 63 72 69   XML DSL</descri
4620: 70 74 69 6f 6e 3e 0d 0a 23 20 20 20 20 20 3c 69  ption>..#     <i
4630: 74 65 6d 3e 0d 0a 23 20 20 20 20 20 20 20 3c 74  tem>..#       <t
4640: 69 74 6c 65 3e 54 68 65 20 46 69 72 73 74 20 49  itle>The First I
4650: 74 65 6d 3c 2f 74 69 74 6c 65 3e 0d 0a 23 20 20  tem</title>..#  
4660: 20 20 20 20 20 3c 6c 69 6e 6b 3e 68 74 74 70 20       <link>http 
4670: 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73 73 65 73  ://huddledmasses
4680: 2e 6f 72 67 2f 6e 65 77 2d 73 69 74 65 2d 6e 65  .org/new-site-ne
4690: 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73 74 2d 70 6f  w-layout-lost-po
46a0: 73 74 73 2f 3c 2f 6c 69 6e 6b 3e 0d 0a 23 20 20  sts/</link>..#  
46b0: 20 20 20 20 20 3c 67 75 69 64 20 69 73 50 65 72       <guid isPer
46c0: 6d 61 4c 69 6e 6b 3d 22 74 72 75 65 22 3e 68 74  maLink="true">ht
46d0: 74 70 20 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73  tp ://huddledmas
46e0: 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69 74 65  ses.org/new-site
46f0: 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73 74  -new-layout-lost
4700: 2d 70 6f 73 74 73 2f 3c 2f 67 75 69 64 3e 0d 0a  -posts/</guid>..
4710: 23 20 20 20 20 20 20 20 3c 64 65 73 63 72 69 70  #       <descrip
4720: 74 69 6f 6e 3e 45 6d 61 20 4c 61 7a 61 72 75 73  tion>Ema Lazarus
4730: 27 20 50 6f 65 6d 3c 2f 64 65 73 63 72 69 70 74  ' Poem</descript
4740: 69 6f 6e 3e 0d 0a 23 20 20 20 20 20 20 20 3c 70  ion>..#       <p
4750: 75 62 44 61 74 65 3e 32 30 30 33 2d 31 30 2d 33  ubDate>2003-10-3
4760: 31 54 30 30 3a 30 30 3a 30 30 5a 3c 2f 70 75 62  1T00:00:00Z</pub
4770: 44 61 74 65 3e 0d 0a 23 20 20 20 20 20 3c 2f 69  Date>..#     </i
4780: 74 65 6d 3e 0d 0a 23 20 20 20 3c 2f 63 68 61 6e  tem>..#   </chan
4790: 6e 65 6c 3e 0d 0a 23 20 3c 2f 72 73 73 3e 0d 0a  nel>..# </rss>..
47a0: 23 0d 0a 23 0d 0a 23 20 44 65 73 63 72 69 70 74  #..#..# Descript
47b0: 69 6f 6e 0d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d  ion..# ---------
47c0: 2d 2d 0d 0a 23 20 54 68 69 73 20 65 78 61 6d 70  --..# This examp
47d0: 6c 65 20 73 68 6f 77 73 20 74 68 65 20 63 72 65  le shows the cre
47e0: 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6d 70 6c  ation of a compl
47f0: 65 74 65 20 52 53 53 20 66 65 65 64 20 77 69 74  ete RSS feed wit
4800: 68 20 61 20 73 69 6e 67 6c 65 20 69 74 65 6d 20  h a single item 
4810: 69 6e 20 69 74 2e 20 0d 0a 23 0d 0a 23 20 4e 4f  in it. ..#..# NO
4820: 54 45 20 74 68 61 74 20 74 68 65 20 62 61 63 6b  TE that the back
4830: 74 69 63 6b 20 69 6e 20 74 68 65 20 68 74 74 70  tick in the http
4840: 60 3a 20 69 6e 20 74 68 65 20 55 52 4c 73 20 69  `: in the URLs i
4850: 6e 20 74 68 65 20 69 6e 70 75 74 20 69 73 20 75  n the input is u
4860: 6e 65 63 65 73 73 61 72 79 2c 20 61 6e 64 20 49  necessary, and I
4870: 20 61 64 64 65 64 20 74 68 65 20 73 70 61 63 65   added the space
4880: 20 61 66 74 65 72 20 74 68 65 20 68 74 74 70 3a   after the http:
4890: 20 69 6e 20 74 68 65 20 55 52 4c 73 20 20 69 6e   in the URLs  in
48a0: 20 74 68 65 20 6f 75 74 70 75 74 20 2d 2d 20 74   the output -- t
48b0: 68 65 73 65 20 61 72 65 20 61 63 63 6f 6d 6f 64  hese are accomod
48c0: 61 74 69 6f 6e 73 20 74 6f 20 50 6f 73 68 43 6f  ations to PoshCo
48d0: 64 65 27 73 20 73 70 61 6d 20 66 69 6c 74 65 72  de's spam filter
48e0: 2e 20 42 61 63 6b 74 69 63 6b 73 20 61 72 65 20  . Backticks are 
48f0: 6e 6f 74 20 6e 65 65 64 20 69 6e 20 74 68 65 20  not need in the 
4900: 69 6e 70 75 74 2c 20 61 6e 64 20 73 70 61 63 65  input, and space
4910: 73 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20  s do not appear 
4920: 69 6e 20 74 68 65 20 61 63 74 75 61 6c 20 6f 75  in the actual ou
4930: 74 70 75 74 2e 0d 0a 23 0d 0a 23 0d 0a 23 2e 45  tput...#..#..#.E
4940: 78 61 6d 70 6c 65 20 0d 0a 23 20 5b 58 4e 61 6d  xample ..# [XNam
4950: 65 73 70 61 63 65 5d 24 61 74 6f 6d 3d 22 68 74  espace]$atom="ht
4960: 74 70 60 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67  tp`://www.w3.org
4970: 2f 32 30 30 35 2f 41 74 6f 6d 22 0d 0a 23 20 43  /2005/Atom"..# C
4980: 3a 5c 50 53 3e 5b 58 4e 61 6d 65 73 70 61 63 65  :\PS>[XNamespace
4990: 5d 24 64 63 20 3d 20 22 68 74 74 70 60 3a 2f 2f  ]$dc = "http`://
49a0: 70 75 72 6c 2e 6f 72 67 2f 64 63 2f 65 6c 65 6d  purl.org/dc/elem
49b0: 65 6e 74 73 2f 31 2e 31 22 0d 0a 23 20 0d 0a 23  ents/1.1"..# ..#
49c0: 20 43 3a 5c 50 53 3e 4e 65 77 2d 58 44 6f 63 75   C:\PS>New-XDocu
49d0: 6d 65 6e 74 20 28 24 61 74 6f 6d 20 2b 20 22 66  ment ($atom + "f
49e0: 65 65 64 22 29 20 2d 45 6e 63 6f 64 69 6e 67 20  eed") -Encoding 
49f0: 22 55 54 46 2d 31 36 22 20 2d 24 28 5b 58 4e 61  "UTF-16" -$([XNa
4a00: 6d 65 73 70 61 63 65 5d 3a 3a 58 6d 6c 20 2b 27  mespace]::Xml +'
4a10: 6c 61 6e 67 27 29 20 22 65 6e 2d 55 53 22 20 2d  lang') "en-US" -
4a20: 64 63 20 24 64 63 20 7b 0d 0a 23 20 20 20 20 74  dc $dc {..#    t
4a30: 69 74 6c 65 20 7b 22 54 65 73 74 20 46 69 72 73  itle {"Test Firs
4a40: 74 20 45 6e 74 72 79 22 7d 0d 0a 23 20 20 20 20  t Entry"}..#    
4a50: 6c 69 6e 6b 20 7b 22 68 74 74 70 60 3a 2f 2f 48  link {"http`://H
4a60: 75 64 64 6c 65 64 4d 61 73 73 65 73 2e 6f 72 67  uddledMasses.org
4a70: 22 7d 0d 0a 23 20 20 20 20 75 70 64 61 74 65 64  "}..#    updated
4a80: 20 7b 28 47 65 74 2d 44 61 74 65 20 2d 66 20 75   {(Get-Date -f u
4a90: 29 20 2d 72 65 70 6c 61 63 65 20 22 20 22 2c 22  ) -replace " ","
4aa0: 54 22 7d 0d 0a 23 20 20 20 20 61 75 74 68 6f 72  T"}..#    author
4ab0: 20 7b 0d 0a 23 20 20 20 20 20 20 20 6e 61 6d 65   {..#       name
4ac0: 20 7b 22 4a 6f 65 6c 20 42 65 6e 6e 65 74 74 22   {"Joel Bennett"
4ad0: 7d 0d 0a 23 20 20 20 20 20 20 20 75 72 69 20 7b  }..#       uri {
4ae0: 22 68 74 74 70 60 3a 2f 2f 48 75 64 64 6c 65 64  "http`://Huddled
4af0: 4d 61 73 73 65 73 2e 6f 72 67 22 7d 0d 0a 23 20  Masses.org"}..# 
4b00: 20 20 20 7d 0d 0a 23 20 20 20 20 69 64 20 7b 22     }..#    id {"
4b10: 68 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64 6d  http`://huddledm
4b20: 61 73 73 65 73 2e 6f 72 67 2f 22 20 7d 0d 0a 23  asses.org/" }..#
4b30: 0d 0a 23 20 20 20 20 65 6e 74 72 79 20 7b 0d 0a  ..#    entry {..
4b40: 23 20 20 20 20 20 20 20 74 69 74 6c 65 20 7b 22  #       title {"
4b50: 54 65 73 74 20 46 69 72 73 74 20 45 6e 74 72 79  Test First Entry
4b60: 22 7d 0d 0a 23 20 20 20 20 20 20 20 6c 69 6e 6b  "}..#       link
4b70: 20 7b 22 68 74 74 70 60 3a 2f 2f 48 75 64 64 6c   {"http`://Huddl
4b80: 65 64 4d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77  edMasses.org/new
4b90: 2d 73 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74  -site-new-layout
4ba0: 2d 6c 6f 73 74 2d 70 6f 73 74 73 2f 22 20 7d 0d  -lost-posts/" }.
4bb0: 0a 23 20 20 20 20 20 20 20 69 64 20 7b 22 68 74  .#       id {"ht
4bc0: 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73  tp`://huddledmas
4bd0: 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69 74 65  ses.org/new-site
4be0: 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73 74  -new-layout-lost
4bf0: 2d 70 6f 73 74 73 2f 22 20 7d 0d 0a 23 20 20 20  -posts/" }..#   
4c00: 20 20 20 20 75 70 64 61 74 65 64 20 7b 28 47 65      updated {(Ge
4c10: 74 2d 44 61 74 65 20 31 30 2f 33 31 2f 32 30 30  t-Date 10/31/200
4c20: 33 20 2d 66 20 75 29 20 2d 72 65 70 6c 61 63 65  3 -f u) -replace
4c30: 20 22 20 22 2c 22 54 22 7d 0d 0a 23 20 20 20 20   " ","T"}..#    
4c40: 20 20 20 73 75 6d 6d 61 72 79 20 7b 22 45 6d 61     summary {"Ema
4c50: 20 4c 61 7a 61 72 75 73 27 20 50 6f 65 6d 22 7d   Lazarus' Poem"}
4c60: 0d 0a 23 20 20 20 20 20 20 20 6c 69 6e 6b 20 2d  ..#       link -
4c70: 72 65 6c 20 6c 69 63 65 6e 73 65 20 2d 68 72 65  rel license -hre
4c80: 66 20 22 68 74 74 70 60 3a 2f 2f 63 72 65 61 74  f "http`://creat
4c90: 69 76 65 63 6f 6d 6d 6f 6e 73 2e 6f 72 67 2f 6c  ivecommons.org/l
4ca0: 69 63 65 6e 73 65 73 2f 62 79 2f 33 2e 30 2f 22  icenses/by/3.0/"
4cb0: 20 2d 74 69 74 6c 65 20 22 43 43 20 42 79 2d 41   -title "CC By-A
4cc0: 74 74 72 69 62 75 74 69 6f 6e 22 0d 0a 23 20 20  ttribution"..#  
4cd0: 20 20 20 20 20 64 63 3a 72 69 67 68 74 73 20 7b       dc:rights {
4ce0: 20 22 43 6f 70 79 72 69 67 68 74 20 32 30 30 39   "Copyright 2009
4cf0: 2c 20 53 6f 6d 65 20 72 69 67 68 74 73 20 72 65  , Some rights re
4d00: 73 65 72 76 65 64 20 28 6c 69 63 65 6e 73 65 64  served (licensed
4d10: 20 75 6e 64 65 72 20 74 68 65 20 43 72 65 61 74   under the Creat
4d20: 69 76 65 20 43 6f 6d 6d 6f 6e 73 20 41 74 74 72  ive Commons Attr
4d30: 69 62 75 74 69 6f 6e 20 33 2e 30 20 55 6e 70 6f  ibution 3.0 Unpo
4d40: 72 74 65 64 20 6c 69 63 65 6e 73 65 29 22 20 7d  rted license)" }
4d50: 0d 0a 23 20 20 20 20 20 20 20 63 61 74 65 67 6f  ..#       catego
4d60: 72 79 20 2d 73 63 68 65 6d 65 20 22 68 74 74 70  ry -scheme "http
4d70: 60 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73 73 65  `://huddledmasse
4d80: 73 2e 6f 72 67 2f 74 61 67 2f 22 20 2d 74 65 72  s.org/tag/" -ter
4d90: 6d 20 22 68 75 64 64 6c 65 64 2d 6d 61 73 73 65  m "huddled-masse
4da0: 73 22 0d 0a 23 20 20 20 20 7d 0d 0a 23 20 7d 20  s"..#    }..# } 
4db0: 7c 20 25 20 7b 20 24 5f 2e 44 65 63 6c 61 72 61  | % { $_.Declara
4dc0: 74 69 6f 6e 2e 54 6f 53 74 72 69 6e 67 28 29 3b  tion.ToString();
4dd0: 20 24 5f 2e 54 6f 53 74 72 69 6e 67 28 29 20 7d   $_.ToString() }
4de0: 0d 0a 23 0d 0a 23 20 3c 3f 78 6d 6c 20 76 65 72  ..#..# <?xml ver
4df0: 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64  sion="1.0" encod
4e00: 69 6e 67 3d 22 55 54 46 2d 31 36 22 20 73 74 61  ing="UTF-16" sta
4e10: 6e 64 61 6c 6f 6e 65 3d 22 79 65 73 22 3f 3e 0d  ndalone="yes"?>.
4e20: 0a 23 20 3c 66 65 65 64 20 78 6d 6c 3a 6c 61 6e  .# <feed xml:lan
4e30: 67 3d 22 65 6e 2d 55 53 22 20 78 6d 6c 6e 73 3d  g="en-US" xmlns=
4e40: 22 68 74 74 70 20 3a 2f 2f 77 77 77 2e 77 33 2e  "http ://www.w3.
4e50: 6f 72 67 2f 32 30 30 35 2f 41 74 6f 6d 22 3e 0d  org/2005/Atom">.
4e60: 0a 23 20 20 20 3c 74 69 74 6c 65 3e 54 65 73 74  .#   <title>Test
4e70: 20 46 69 72 73 74 20 45 6e 74 72 79 3c 2f 74 69   First Entry</ti
4e80: 74 6c 65 3e 0d 0a 23 20 20 20 3c 6c 69 6e 6b 3e  tle>..#   <link>
4e90: 68 74 74 70 20 3a 2f 2f 48 75 64 64 6c 65 64 4d  http ://HuddledM
4ea0: 61 73 73 65 73 2e 6f 72 67 3c 2f 6c 69 6e 6b 3e  asses.org</link>
4eb0: 0d 0a 23 20 20 20 3c 75 70 64 61 74 65 64 3e 32  ..#   <updated>2
4ec0: 30 30 39 2d 30 37 2d 32 39 54 31 37 3a 32 35 3a  009-07-29T17:25:
4ed0: 34 39 5a 3c 2f 75 70 64 61 74 65 64 3e 0d 0a 23  49Z</updated>..#
4ee0: 20 20 20 3c 61 75 74 68 6f 72 3e 0d 0a 23 20 20     <author>..#  
4ef0: 20 20 20 20 3c 6e 61 6d 65 3e 4a 6f 65 6c 20 42      <name>Joel B
4f00: 65 6e 6e 65 74 74 3c 2f 6e 61 6d 65 3e 0d 0a 23  ennett</name>..#
4f10: 20 20 20 20 20 20 3c 75 72 69 3e 68 74 74 70 20        <uri>http 
4f20: 3a 2f 2f 48 75 64 64 6c 65 64 4d 61 73 73 65 73  ://HuddledMasses
4f30: 2e 6f 72 67 3c 2f 75 72 69 3e 0d 0a 23 20 20 20  .org</uri>..#   
4f40: 3c 2f 61 75 74 68 6f 72 3e 0d 0a 23 20 20 20 3c  </author>..#   <
4f50: 69 64 3e 68 74 74 70 20 3a 2f 2f 68 75 64 64 6c  id>http ://huddl
4f60: 65 64 6d 61 73 73 65 73 2e 6f 72 67 2f 3c 2f 69  edmasses.org/</i
4f70: 64 3e 0d 0a 23 20 20 20 3c 65 6e 74 72 79 3e 0d  d>..#   <entry>.
4f80: 0a 23 20 20 20 20 20 3c 74 69 74 6c 65 3e 54 65  .#     <title>Te
4f90: 73 74 20 46 69 72 73 74 20 45 6e 74 72 79 3c 2f  st First Entry</
4fa0: 74 69 74 6c 65 3e 0d 0a 23 20 20 20 20 20 3c 6c  title>..#     <l
4fb0: 69 6e 6b 3e 68 74 74 70 20 3a 2f 2f 48 75 64 64  ink>http ://Hudd
4fc0: 6c 65 64 4d 61 73 73 65 73 2e 6f 72 67 2f 6e 65  ledMasses.org/ne
4fd0: 77 2d 73 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75  w-site-new-layou
4fe0: 74 2d 6c 6f 73 74 2d 70 6f 73 74 73 2f 3c 2f 6c  t-lost-posts/</l
4ff0: 69 6e 6b 3e 0d 0a 23 20 20 20 20 20 3c 69 64 3e  ink>..#     <id>
5000: 68 74 74 70 20 3a 2f 2f 68 75 64 64 6c 65 64 6d  http ://huddledm
5010: 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69  asses.org/new-si
5020: 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f  te-new-layout-lo
5030: 73 74 2d 70 6f 73 74 73 2f 3c 2f 69 64 3e 0d 0a  st-posts/</id>..
5040: 23 20 20 20 20 20 3c 75 70 64 61 74 65 64 3e 32  #     <updated>2
5050: 30 30 33 2d 31 30 2d 33 31 54 30 30 3a 30 30 3a  003-10-31T00:00:
5060: 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e 0d 0a 23  00Z</updated>..#
5070: 20 20 20 20 20 3c 73 75 6d 6d 61 72 79 3e 45 6d       <summary>Em
5080: 61 20 4c 61 7a 61 72 75 73 27 20 50 6f 65 6d 3c  a Lazarus' Poem<
5090: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 20 20 20 20  /summary>..#    
50a0: 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 6c 69 63 65   <link rel="lice
50b0: 6e 73 65 22 20 68 72 65 66 3d 22 68 74 74 70 20  nse" href="http 
50c0: 3a 2f 2f 63 72 65 61 74 69 76 65 63 6f 6d 6d 6f  ://creativecommo
50d0: 6e 73 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f  ns.org/licenses/
50e0: 62 79 2f 33 2e 30 2f 22 20 74 69 74 6c 65 3d 22  by/3.0/" title="
50f0: 43 43 20 42 79 2d 41 74 74 72 69 62 75 74 69 6f  CC By-Attributio
5100: 6e 22 20 2f 3e 0d 0a 23 20 20 20 20 20 3c 64 63  n" />..#     <dc
5110: 3a 72 69 67 68 74 73 3e 43 6f 70 79 72 69 67 68  :rights>Copyrigh
5120: 74 20 32 30 30 39 2c 20 53 6f 6d 65 20 72 69 67  t 2009, Some rig
5130: 68 74 73 20 72 65 73 65 72 76 65 64 20 28 6c 69  hts reserved (li
5140: 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68 65  censed under the
5150: 20 43 72 65 61 74 69 76 65 20 43 6f 6d 6d 6f 6e   Creative Common
5160: 73 20 41 74 74 72 69 62 75 74 69 6f 6e 20 33 2e  s Attribution 3.
5170: 30 20 55 6e 70 6f 72 74 65 64 20 6c 69 63 65 6e  0 Unported licen
5180: 73 65 29 3c 2f 64 63 3a 72 69 67 68 74 73 3e 0d  se)</dc:rights>.
5190: 0a 23 20 20 20 20 20 3c 63 61 74 65 67 6f 72 79  .#     <category
51a0: 20 73 63 68 65 6d 65 3d 22 68 74 74 70 20 3a 2f   scheme="http :/
51b0: 2f 68 75 64 64 6c 65 64 6d 61 73 73 65 73 2e 6f  /huddledmasses.o
51c0: 72 67 2f 74 61 67 2f 22 20 74 65 72 6d 3d 22 68  rg/tag/" term="h
51d0: 75 64 64 6c 65 64 2d 6d 61 73 73 65 73 22 20 2f  uddled-masses" /
51e0: 3e 0d 0a 23 20 20 20 3c 2f 65 6e 74 72 79 3e 0d  >..#   </entry>.
51f0: 0a 23 20 3c 2f 66 65 65 64 3e 0d 0a 23 0d 0a 23  .# </feed>..#..#
5200: 0d 0a 23 20 44 65 73 63 72 69 70 74 69 6f 6e 0d  ..# Description.
5210: 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  .# -----------..
5220: 23 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 73  # This example s
5230: 68 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  hows the use of 
5240: 61 20 64 65 66 61 75 6c 74 20 6e 61 6d 65 73 70  a default namesp
5250: 61 63 65 2c 20 61 73 20 77 65 6c 6c 20 61 73 20  ace, as well as 
5260: 61 64 64 69 74 69 6f 6e 61 6c 20 73 70 65 63 69  additional speci
5270: 66 69 63 20 6e 61 6d 65 73 70 61 63 65 73 20 66  fic namespaces f
5280: 6f 72 20 74 68 65 20 22 64 63 22 20 6e 61 6d 65  or the "dc" name
5290: 73 70 61 63 65 2e 20 49 74 20 61 6c 73 6f 20 64  space. It also d
52a0: 65 6d 6f 6e 73 74 72 61 74 65 73 20 68 6f 77 20  emonstrates how 
52b0: 79 6f 75 20 63 61 6e 20 67 65 74 20 74 68 65 20  you can get the 
52c0: 3c 3f 78 6d 6c 3f 3e 20 64 65 63 6c 61 72 61 74  <?xml?> declarat
52d0: 69 6f 6e 20 77 68 69 63 68 20 64 6f 65 73 20 6e  ion which does n
52e0: 6f 74 20 61 70 70 65 61 72 20 69 6e 20 61 20 73  ot appear in a s
52f0: 69 6d 70 6c 65 20 2e 54 6f 53 74 72 69 6e 67 28  imple .ToString(
5300: 29 2e 0d 0a 23 0d 0a 23 20 4e 4f 54 45 20 74 68  )...#..# NOTE th
5310: 61 74 20 74 68 65 20 62 61 63 6b 74 69 63 6b 20  at the backtick 
5320: 69 6e 20 74 68 65 20 68 74 74 70 60 3a 20 69 6e  in the http`: in
5330: 20 74 68 65 20 55 52 4c 73 20 69 6e 20 74 68 65   the URLs in the
5340: 20 69 6e 70 75 74 20 69 73 20 75 6e 65 63 65 73   input is uneces
5350: 73 61 72 79 2c 20 61 6e 64 20 49 20 61 64 64 65  sary, and I adde
5360: 64 20 74 68 65 20 73 70 61 63 65 20 61 66 74 65  d the space afte
5370: 72 20 74 68 65 20 68 74 74 70 3a 20 69 6e 20 74  r the http: in t
5380: 68 65 20 55 52 4c 73 20 20 69 6e 20 74 68 65 20  he URLs  in the 
5390: 6f 75 74 70 75 74 20 2d 2d 20 74 68 65 73 65 20  output -- these 
53a0: 61 72 65 20 61 63 63 6f 6d 6f 64 61 74 69 6f 6e  are accomodation
53b0: 73 20 74 6f 20 50 6f 73 68 43 6f 64 65 27 73 20  s to PoshCode's 
53c0: 73 70 61 6d 20 66 69 6c 74 65 72 2e 20 42 61 63  spam filter. Bac
53d0: 6b 74 69 63 6b 73 20 61 72 65 20 6e 6f 74 20 6e  kticks are not n
53e0: 65 65 64 20 69 6e 20 74 68 65 20 69 6e 70 75 74  eed in the input
53f0: 2c 20 61 6e 64 20 73 70 61 63 65 73 20 64 6f 20  , and spaces do 
5400: 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
5410: 65 20 61 63 74 75 61 6c 20 6f 75 74 70 75 74 2e  e actual output.
5420: 23 0d 0a 23 20 0d 0a 50 61 72 61 6d 28 0d 0a 20  #..# ..Param(.. 
5430: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 4d 61 6e    [Parameter(Man
5440: 64 61 74 6f 72 79 20 3d 20 24 74 72 75 65 2c 20  datory = $true, 
5450: 50 6f 73 69 74 69 6f 6e 20 3d 20 30 29 5d 0d 0a  Position = 0)]..
5460: 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d 6c 2e 4c     [System.Xml.L
5470: 69 6e 71 2e 58 4e 61 6d 65 5d 24 72 6f 6f 74 0d  inq.XName]$root.
5480: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
5490: 72 28 4d 61 6e 64 61 74 6f 72 79 20 3d 20 24 66  r(Mandatory = $f
54a0: 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 73 74 72 69  alse)]..   [stri
54b0: 6e 67 5d 24 56 65 72 73 69 6f 6e 20 3d 20 22 31  ng]$Version = "1
54c0: 2e 30 22 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61  .0"..,..   [Para
54d0: 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 20  meter(Mandatory 
54e0: 3d 20 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b  = $false)]..   [
54f0: 73 74 72 69 6e 67 5d 24 45 6e 63 6f 64 69 6e 67  string]$Encoding
5500: 20 3d 20 22 55 54 46 2d 38 22 0d 0a 2c 0d 0a 20   = "UTF-8"..,.. 
5510: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 4d 61 6e    [Parameter(Man
5520: 64 61 74 6f 72 79 20 3d 20 24 66 61 6c 73 65 29  datory = $false)
5530: 5d 0d 0a 20 20 20 5b 73 74 72 69 6e 67 5d 24 53  ]..   [string]$S
5540: 74 61 6e 64 61 6c 6f 6e 65 20 3d 20 22 79 65 73  tandalone = "yes
5550: 22 0d 0a 2c 0d 0a 20 20 20 5b 41 6c 6c 6f 77 4e  "..,..   [AllowN
5560: 75 6c 6c 28 29 5d 5b 41 6c 6c 6f 77 45 6d 70 74  ull()][AllowEmpt
5570: 79 53 74 72 69 6e 67 28 29 5d 5b 41 6c 6c 6f 77  yString()][Allow
5580: 45 6d 70 74 79 43 6f 6c 6c 65 63 74 69 6f 6e 28  EmptyCollection(
5590: 29 5d 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  )]..   [Paramete
55a0: 72 28 50 6f 73 69 74 69 6f 6e 3d 39 39 2c 20 4d  r(Position=99, M
55b0: 61 6e 64 61 74 6f 72 79 20 3d 20 24 66 61 6c 73  andatory = $fals
55c0: 65 2c 20 56 61 6c 75 65 46 72 6f 6d 52 65 6d 61  e, ValueFromRema
55d0: 69 6e 69 6e 67 41 72 67 75 6d 65 6e 74 73 3d 24  iningArguments=$
55e0: 74 72 75 65 29 5d 0d 0a 20 20 20 5b 50 53 4f 62  true)]..   [PSOb
55f0: 6a 65 63 74 5b 5d 5d 24 61 72 67 73 0d 0a 29 0d  ject[]]$args..).
5600: 0a 42 45 47 49 4e 20 7b 0d 0a 20 20 20 24 73 63  .BEGIN {..   $sc
5610: 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65 48 61  ript:NameSpaceHa
5620: 73 68 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  sh = New-Object 
5630: 27 44 69 63 74 69 6f 6e 61 72 79 5b 53 74 72 69  'Dictionary[Stri
5640: 6e 67 2c 58 4e 61 6d 65 73 70 61 63 65 5d 27 0d  ng,XNamespace]'.
5650: 0a 20 20 20 69 66 28 24 72 6f 6f 74 2e 4e 61 6d  .   if($root.Nam
5660: 65 73 70 61 63 65 4e 61 6d 65 29 20 7b 0d 0a 20  espaceName) {.. 
5670: 20 20 20 20 20 24 73 63 72 69 70 74 3a 4e 61 6d       $script:Nam
5680: 65 53 70 61 63 65 48 61 73 68 2e 41 64 64 28 22  eSpaceHash.Add("
5690: 22 2c 20 24 72 6f 6f 74 2e 4e 61 6d 65 73 70 61  ", $root.Namespa
56a0: 63 65 29 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 50 52  ce)..   }..}..PR
56b0: 4f 43 45 53 53 20 7b 0d 0a 20 20 20 4e 65 77 2d  OCESS {..   New-
56c0: 4f 62 6a 65 63 74 20 58 44 6f 63 75 6d 65 6e 74  Object XDocument
56d0: 20 28 4e 65 77 2d 4f 62 6a 65 63 74 20 58 44 65   (New-Object XDe
56e0: 63 6c 61 72 61 74 69 6f 6e 20 24 56 65 72 73 69  claration $Versi
56f0: 6f 6e 2c 20 24 45 6e 63 6f 64 69 6e 67 2c 20 24  on, $Encoding, $
5700: 73 74 61 6e 64 61 6c 6f 6e 65 29 2c 28 0d 0a 20  standalone),(.. 
5710: 20 20 20 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20       New-Object 
5720: 58 45 6c 65 6d 65 6e 74 20 24 28 0d 0a 20 20 20  XElement $(..   
5730: 20 20 20 20 20 20 24 72 6f 6f 74 0d 0a 20 20 20        $root..   
5740: 20 20 20 20 20 20 77 68 69 6c 65 28 24 61 72 67        while($arg
5750: 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  s) {..          
5760: 20 20 24 61 74 74 72 69 62 2c 20 24 76 61 6c 75    $attrib, $valu
5770: 65 2c 20 24 61 72 67 73 20 3d 20 24 61 72 67 73  e, $args = $args
5780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
5790: 28 24 61 74 74 72 69 62 20 2d 69 73 20 5b 53 63  ($attrib -is [Sc
57a0: 72 69 70 74 42 6c 6f 63 6b 5d 29 20 7b 0d 0a 20  riptBlock]) {.. 
57b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
57c0: 57 72 69 74 65 2d 56 65 72 62 6f 73 65 20 22 50  Write-Verbose "P
57d0: 72 65 70 61 72 73 65 64 20 44 53 4c 3a 20 24 61  reparsed DSL: $a
57e0: 74 74 72 69 62 22 0d 0a 20 20 20 20 20 20 20 20  ttrib"..        
57f0: 20 20 20 20 20 20 20 24 61 74 74 72 69 62 20 3d         $attrib =
5800: 20 43 6f 6e 76 65 72 74 46 72 6f 6d 2d 58 6d 6c   ConvertFrom-Xml
5810: 44 73 6c 20 24 61 74 74 72 69 62 0d 0a 20 20 20  Dsl $attrib..   
5820: 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69 74              Writ
5830: 65 2d 56 65 72 62 6f 73 65 20 22 52 65 70 61 72  e-Verbose "Repar
5840: 73 65 64 20 44 53 4c 3a 20 24 61 74 74 72 69 62  sed DSL: $attrib
5850: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "..             
5860: 20 20 26 24 61 74 74 72 69 62 0d 0a 20 20 20 20    &$attrib..    
5870: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66          } elseif
5880: 20 28 20 24 76 61 6c 75 65 20 2d 69 73 20 5b 53   ( $value -is [S
5890: 63 72 69 70 74 42 6c 6f 63 6b 5d 20 2d 61 6e 64  criptBlock] -and
58a0: 20 22 2d 43 4f 4e 54 45 4e 54 22 2e 53 74 61 72   "-CONTENT".Star
58b0: 74 73 57 69 74 68 28 24 61 74 74 72 69 62 2e 54  tsWith($attrib.T
58c0: 72 69 6d 45 6e 64 28 27 3a 27 29 2e 54 6f 55 70  rimEnd(':').ToUp
58d0: 70 65 72 28 29 29 29 20 7b 0d 0a 20 20 20 20 20  per())) {..     
58e0: 20 20 20 20 20 20 20 20 20 20 24 76 61 6c 75 65            $value
58f0: 20 3d 20 43 6f 6e 76 65 72 74 46 72 6f 6d 2d 58   = ConvertFrom-X
5900: 6d 6c 44 73 6c 20 24 76 61 6c 75 65 0d 0a 20 20  mlDsl $value..  
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 26 24 76               &$v
5920: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
5930: 20 20 7d 20 65 6c 73 65 69 66 20 28 20 24 76 61    } elseif ( $va
5940: 6c 75 65 20 2d 69 73 20 5b 58 4e 61 6d 65 73 70  lue -is [XNamesp
5950: 61 63 65 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20  ace]) {..       
5960: 20 20 20 20 20 20 20 20 4e 65 77 2d 4f 62 6a 65          New-Obje
5970: 63 74 20 58 41 74 74 72 69 62 75 74 65 20 28 5b  ct XAttribute ([
5980: 58 4e 61 6d 65 73 70 61 63 65 5d 3a 3a 58 6d 6c  XNamespace]::Xml
5990: 6e 73 20 2b 20 24 61 74 74 72 69 62 2e 54 72 69  ns + $attrib.Tri
59a0: 6d 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d  mStart("-").Trim
59b0: 45 6e 64 28 27 3a 27 29 29 2c 20 24 76 61 6c 75  End(':')), $valu
59c0: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
59d0: 20 20 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70    $script:NameSp
59e0: 61 63 65 48 61 73 68 2e 41 64 64 28 24 61 74 74  aceHash.Add($att
59f0: 72 69 62 2e 54 72 69 6d 53 74 61 72 74 28 22 2d  rib.TrimStart("-
5a00: 22 29 2e 54 72 69 6d 45 6e 64 28 27 3a 27 29 2c  ").TrimEnd(':'),
5a10: 20 24 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20   $value)..      
5a20: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
5a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e                 N
5a40: 65 77 2d 4f 62 6a 65 63 74 20 58 41 74 74 72 69  ew-Object XAttri
5a50: 62 75 74 65 20 24 61 74 74 72 69 62 2e 54 72 69  bute $attrib.Tri
5a60: 6d 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d  mStart("-").Trim
5a70: 45 6e 64 28 27 3a 27 29 2c 20 24 76 61 6c 75 65  End(':'), $value
5a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
5a90: 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  .         }..   
5aa0: 20 20 20 29 29 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 53     ))..}..}....S
5ab0: 65 74 2d 41 6c 69 61 73 20 78 6d 6c 20 4e 65 77  et-Alias xml New
5ac0: 2d 58 44 6f 63 75 6d 65 6e 74 20 2d 45 41 20 30  -XDocument -EA 0
5ad0: 0d 0a 53 65 74 2d 41 6c 69 61 73 20 4e 65 77 2d  ..Set-Alias New-
5ae0: 58 6d 6c 20 4e 65 77 2d 58 44 6f 63 75 6d 65 6e  Xml New-XDocumen
5af0: 74 20 2d 45 41 20 30 0d 0a 0d 0a 66 75 6e 63 74  t -EA 0....funct
5b00: 69 6f 6e 20 4e 65 77 2d 58 41 74 74 72 69 62 75  ion New-XAttribu
5b10: 74 65 20 7b 0d 0a 23 2e 53 79 6e 6f 70 73 79 73  te {..#.Synopsys
5b20: 0d 0a 23 20 20 20 43 72 65 61 74 65 73 20 61 20  ..#   Creates a 
5b30: 6e 65 77 20 58 41 74 74 72 69 62 75 74 65 20 28  new XAttribute (
5b40: 61 6e 20 78 6d 6c 20 61 74 74 72 69 62 75 74 65  an xml attribute
5b50: 20 6f 6e 20 61 6e 20 58 45 6c 65 6d 65 6e 74 20   on an XElement 
5b60: 66 6f 72 20 58 44 6f 63 75 6d 65 6e 74 29 0d 0a  for XDocument)..
5b70: 23 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23  #.Description..#
5b80: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 77 6f    This is the wo
5b90: 72 6b 2d 68 6f 72 73 65 20 66 6f 72 20 74 68 65  rk-horse for the
5ba0: 20 58 4d 4c 20 6d 69 6e 69 2d 64 73 6c 0d 0a 23   XML mini-dsl..#
5bb0: 2e 50 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 0d  .Parameter name.
5bc0: 0a 23 20 20 20 54 68 65 20 61 74 74 72 69 62 75  .#   The attribu
5bd0: 74 65 20 6e 61 6d 65 0d 0a 23 2e 50 61 72 61 6d  te name..#.Param
5be0: 65 74 65 72 20 76 61 6c 75 65 0d 0a 23 20 20 54  eter value..#  T
5bf0: 68 65 20 61 74 74 72 69 62 75 74 65 20 76 61 6c  he attribute val
5c00: 75 65 0d 0a 50 61 72 61 6d 28 5b 50 61 72 61 6d  ue..Param([Param
5c10: 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24  eter(Mandatory=$
5c20: 74 72 75 65 29 5d 24 6e 61 6d 65 2c 5b 50 61 72  true)]$name,[Par
5c30: 61 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79  ameter(Mandatory
5c40: 3d 24 74 72 75 65 29 5d 24 76 61 6c 75 65 29 0d  =$true)]$value).
5c50: 0a 20 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20 58  .   New-Object X
5c60: 41 74 74 72 69 62 75 74 65 20 24 6e 61 6d 65 2c  Attribute $name,
5c70: 20 24 76 61 6c 75 65 0d 0a 7d 0d 0a 53 65 74 2d   $value..}..Set-
5c80: 41 6c 69 61 73 20 78 61 20 4e 65 77 2d 58 41 74  Alias xa New-XAt
5c90: 74 72 69 62 75 74 65 20 2d 45 41 20 30 0d 0a 53  tribute -EA 0..S
5ca0: 65 74 2d 41 6c 69 61 73 20 4e 65 77 2d 58 6d 6c  et-Alias New-Xml
5cb0: 41 74 74 72 69 62 75 74 65 20 4e 65 77 2d 58 41  Attribute New-XA
5cc0: 74 74 72 69 62 75 74 65 20 2d 45 41 20 30 0d 0a  ttribute -EA 0..
5cd0: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 4e 65 77  ....function New
5ce0: 2d 58 45 6c 65 6d 65 6e 74 20 7b 0d 0a 23 2e 53  -XElement {..#.S
5cf0: 79 6e 6f 70 73 79 73 0d 0a 23 20 20 20 43 72 65  ynopsys..#   Cre
5d00: 61 74 65 73 20 61 20 6e 65 77 20 58 45 6c 65 6d  ates a new XElem
5d10: 65 6e 74 20 28 61 6e 20 78 6d 6c 20 74 61 67 20  ent (an xml tag 
5d20: 66 6f 72 20 58 44 6f 63 75 6d 65 6e 74 29 0d 0a  for XDocument)..
5d30: 23 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23  #.Description..#
5d40: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 77 6f    This is the wo
5d50: 72 6b 2d 68 6f 72 73 65 20 66 6f 72 20 74 68 65  rk-horse for the
5d60: 20 58 4d 4c 20 6d 69 6e 69 2d 64 73 6c 0d 0a 23   XML mini-dsl..#
5d70: 2e 50 61 72 61 6d 65 74 65 72 20 74 61 67 0d 0a  .Parameter tag..
5d80: 23 20 20 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  #   The name of 
5d90: 74 68 65 20 78 6d 6c 20 74 61 67 0d 0a 23 2e 50  the xml tag..#.P
5da0: 61 72 61 6d 65 74 65 72 20 61 72 67 73 0d 0a 23  arameter args..#
5db0: 20 20 20 74 68 69 73 20 69 73 20 77 68 65 72 65     this is where
5dc0: 20 61 6c 6c 20 74 68 65 20 64 73 6c 20 6d 61 67   all the dsl mag
5dd0: 69 63 20 68 61 70 70 65 6e 73 2e 20 50 6c 65 61  ic happens. Plea
5de0: 73 65 20 73 65 65 20 74 68 65 20 45 78 61 6d 70  se see the Examp
5df0: 6c 65 73 2e 20 3a 29 0d 0a 50 61 72 61 6d 28 0d  les. :)..Param(.
5e00: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 4d  .   [Parameter(M
5e10: 61 6e 64 61 74 6f 72 79 20 3d 20 24 74 72 75 65  andatory = $true
5e20: 2c 20 50 6f 73 69 74 69 6f 6e 20 3d 20 30 29 5d  , Position = 0)]
5e30: 0d 0a 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d 6c  ..   [System.Xml
5e40: 2e 4c 69 6e 71 2e 58 4e 61 6d 65 5d 24 74 61 67  .Linq.XName]$tag
5e50: 0d 0a 2c 0d 0a 20 20 20 5b 41 6c 6c 6f 77 4e 75  ..,..   [AllowNu
5e60: 6c 6c 28 29 5d 5b 41 6c 6c 6f 77 45 6d 70 74 79  ll()][AllowEmpty
5e70: 53 74 72 69 6e 67 28 29 5d 5b 41 6c 6c 6f 77 45  String()][AllowE
5e80: 6d 70 74 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 29  mptyCollection()
5e90: 5d 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72  ]..   [Parameter
5ea0: 28 50 6f 73 69 74 69 6f 6e 3d 39 39 2c 20 4d 61  (Position=99, Ma
5eb0: 6e 64 61 74 6f 72 79 20 3d 20 24 66 61 6c 73 65  ndatory = $false
5ec0: 2c 20 56 61 6c 75 65 46 72 6f 6d 52 65 6d 61 69  , ValueFromRemai
5ed0: 6e 69 6e 67 41 72 67 75 6d 65 6e 74 73 3d 24 74  ningArguments=$t
5ee0: 72 75 65 29 5d 0d 0a 20 20 20 5b 50 53 4f 62 6a  rue)]..   [PSObj
5ef0: 65 63 74 5b 5d 5d 24 61 72 67 73 0d 0a 29 0d 0a  ect[]]$args..)..
5f00: 23 20 20 42 45 47 49 4e 20 7b 0d 0a 20 20 20 23  #  BEGIN {..   #
5f10: 20 20 69 66 28 5b 73 74 72 69 6e 67 5d 3a 3a 49    if([string]::I
5f20: 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 20 24 74  sNullOrEmpty( $t
5f30: 61 67 2e 4e 61 6d 65 73 70 61 63 65 4e 61 6d 65  ag.NamespaceName
5f40: 20 29 29 20 7b 0d 0a 20 20 20 20 20 20 23 20 20   )) {..      #  
5f50: 24 74 61 67 20 3d 20 24 28 24 73 63 72 69 70 74  $tag = $($script
5f60: 3a 4e 61 6d 65 53 70 61 63 65 53 74 61 63 6b 2e  :NameSpaceStack.
5f70: 50 65 65 6b 28 29 29 20 2b 20 24 74 61 67 0d 0a  Peek()) + $tag..
5f80: 20 20 20 20 20 20 23 20 20 69 66 28 20 24 73 63        #  if( $sc
5f90: 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65 53 74  ript:NameSpaceSt
5fa0: 61 63 6b 2e 43 6f 75 6e 74 20 2d 67 74 20 30 20  ack.Count -gt 0 
5fb0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 23 20  ) {..         # 
5fc0: 20 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61   $script:NameSpa
5fd0: 63 65 53 74 61 63 6b 2e 50 75 73 68 28 20 24 73  ceStack.Push( $s
5fe0: 63 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65 53  cript:NameSpaceS
5ff0: 74 61 63 6b 2e 50 65 65 6b 28 29 20 29 0d 0a 20  tack.Peek() ).. 
6000: 20 20 20 20 20 23 20 20 7d 20 65 6c 73 65 20 7b       #  } else {
6010: 0d 0a 20 20 20 20 20 20 20 20 20 23 20 20 24 73  ..         #  $s
6020: 63 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65 53  cript:NameSpaceS
6030: 74 61 63 6b 2e 50 75 73 68 28 20 24 6e 75 6c 6c  tack.Push( $null
6040: 20 29 0d 0a 20 20 20 20 20 20 23 20 20 7d 20 20   )..      #  }  
6050: 20 20 20 20 0d 0a 20 20 20 23 20 20 7d 20 65 6c      ..   #  } el
6060: 73 65 20 7b 0d 0a 20 20 20 20 20 20 23 20 20 24  se {..      #  $
6070: 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65  script:NameSpace
6080: 53 74 61 63 6b 2e 50 75 73 68 28 20 24 74 61 67  Stack.Push( $tag
6090: 2e 4e 61 6d 65 73 70 61 63 65 20 29 0d 0a 20 20  .Namespace )..  
60a0: 20 23 20 20 7d 0d 0a 23 20 20 7d 0d 0a 50 52 4f   #  }..#  }..PRO
60b0: 43 45 53 53 20 7b 0d 0a 20 20 4e 65 77 2d 4f 62  CESS {..  New-Ob
60c0: 6a 65 63 74 20 58 45 6c 65 6d 65 6e 74 20 24 28  ject XElement $(
60d0: 0d 0a 20 20 20 20 20 24 74 61 67 0d 0a 20 20 20  ..     $tag..   
60e0: 20 20 77 68 69 6c 65 28 24 61 72 67 73 29 20 7b    while($args) {
60f0: 0d 0a 20 20 20 20 20 20 20 20 24 61 74 74 72 69  ..        $attri
6100: 62 2c 20 24 76 61 6c 75 65 2c 20 24 61 72 67 73  b, $value, $args
6110: 20 3d 20 24 61 72 67 73 0d 0a 20 20 20 20 20 20   = $args..      
6120: 20 20 69 66 28 24 61 74 74 72 69 62 20 2d 69 73    if($attrib -is
6130: 20 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5d 29 20   [ScriptBlock]) 
6140: 7b 20 23 20 74 68 65 6e 20 69 74 27 73 20 63 6f  { # then it's co
6150: 6e 74 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20  ntent..         
6160: 20 20 26 24 61 74 74 72 69 62 0d 0a 20 20 20 20    &$attrib..    
6170: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 20 24      } elseif ( $
6180: 76 61 6c 75 65 20 2d 69 73 20 5b 53 63 72 69 70  value -is [Scrip
6190: 74 42 6c 6f 63 6b 5d 20 2d 61 6e 64 20 22 2d 43  tBlock] -and "-C
61a0: 4f 4e 54 45 4e 54 22 2e 53 74 61 72 74 73 57 69  ONTENT".StartsWi
61b0: 74 68 28 24 61 74 74 72 69 62 2e 54 72 69 6d 45  th($attrib.TrimE
61c0: 6e 64 28 27 3a 27 29 2e 54 6f 55 70 70 65 72 28  nd(':').ToUpper(
61d0: 29 29 29 20 7b 20 23 20 74 68 65 6e 20 69 74 27  ))) { # then it'
61e0: 73 20 63 6f 6e 74 65 6e 74 0d 0a 20 20 20 20 20  s content..     
61f0: 20 20 20 20 20 20 26 24 76 61 6c 75 65 0d 0a 20        &$value.. 
6200: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20         } elseif 
6210: 28 20 24 76 61 6c 75 65 20 2d 69 73 20 5b 58 4e  ( $value -is [XN
6220: 61 6d 65 73 70 61 63 65 5d 29 20 7b 0d 0a 20 20  amespace]) {..  
6230: 20 20 20 20 20 20 20 20 20 4e 65 77 2d 4f 62 6a           New-Obj
6240: 65 63 74 20 58 41 74 74 72 69 62 75 74 65 20 28  ect XAttribute (
6250: 5b 58 4e 61 6d 65 73 70 61 63 65 5d 3a 3a 58 6d  [XNamespace]::Xm
6260: 6c 6e 73 20 2b 20 24 61 74 74 72 69 62 2e 54 72  lns + $attrib.Tr
6270: 69 6d 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69  imStart("-").Tri
6280: 6d 45 6e 64 28 27 3a 27 29 29 2c 20 24 76 61 6c  mEnd(':')), $val
6290: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 24  ue..           $
62a0: 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65  script:NameSpace
62b0: 48 61 73 68 2e 41 64 64 28 24 61 74 74 72 69 62  Hash.Add($attrib
62c0: 2e 54 72 69 6d 53 74 61 72 74 28 22 2d 22 29 2e  .TrimStart("-").
62d0: 54 72 69 6d 45 6e 64 28 27 3a 27 29 2c 20 24 76  TrimEnd(':'), $v
62e0: 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7d  alue)..        }
62f0: 20 65 6c 73 65 69 66 28 24 76 61 6c 75 65 20 2d   elseif($value -
6300: 6d 61 74 63 68 20 22 2d 28 3f 21 5c 64 29 5c 77  match "-(?!\d)\w
6310: 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  ") {..          
6320: 20 20 24 61 72 67 73 20 3d 20 40 28 24 76 61 6c    $args = @($val
6330: 75 65 29 2b 40 28 24 61 72 67 73 29 0d 0a 20 20  ue)+@($args)..  
6340: 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 28 24        } elseif($
6350: 76 61 6c 75 65 20 2d 6e 65 20 24 6e 75 6c 6c 29  value -ne $null)
6360: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 4e   {..           N
6370: 65 77 2d 4f 62 6a 65 63 74 20 58 41 74 74 72 69  ew-Object XAttri
6380: 62 75 74 65 20 24 61 74 74 72 69 62 2e 54 72 69  bute $attrib.Tri
6390: 6d 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d  mStart("-").Trim
63a0: 45 6e 64 28 27 3a 27 29 2c 20 24 76 61 6c 75 65  End(':'), $value
63b0: 0d 0a 20 20 20 20 20 20 20 20 7d 20 20 20 20 20  ..        }     
63c0: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20     ..        .. 
63d0: 20 20 20 20 7d 0d 0a 20 20 20 29 0d 0a 7d 0d 0a      }..   )..}..
63e0: 23 20 20 45 4e 44 20 7b 0d 0a 20 20 20 23 20 20  #  END {..   #  
63f0: 24 6e 75 6c 6c 20 3d 20 24 73 63 72 69 70 74 3a  $null = $script:
6400: 4e 61 6d 65 53 70 61 63 65 53 74 61 63 6b 2e 50  NameSpaceStack.P
6410: 6f 70 28 29 0d 0a 23 20 20 7d 0d 0a 7d 0d 0a 53  op()..#  }..}..S
6420: 65 74 2d 41 6c 69 61 73 20 78 65 20 4e 65 77 2d  et-Alias xe New-
6430: 58 45 6c 65 6d 65 6e 74 0d 0a 53 65 74 2d 41 6c  XElement..Set-Al
6440: 69 61 73 20 4e 65 77 2d 58 6d 6c 45 6c 65 6d 65  ias New-XmlEleme
6450: 6e 74 20 4e 65 77 2d 58 45 6c 65 6d 65 6e 74 0d  nt New-XElement.
6460: 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 43 6f 6e 76  ...function Conv
6470: 65 72 74 46 72 6f 6d 2d 58 6d 6c 44 73 6c 20 7b  ertFrom-XmlDsl {
6480: 0d 0a 50 61 72 61 6d 28 5b 53 63 72 69 70 74 42  ..Param([ScriptB
6490: 6c 6f 63 6b 5d 24 73 63 72 69 70 74 29 0d 0a 20  lock]$script).. 
64a0: 20 20 24 70 61 72 73 65 72 72 6f 72 73 20 3d 20    $parserrors = 
64b0: 24 6e 75 6c 6c 0d 0a 20 20 20 24 67 6c 6f 62 61  $null..   $globa
64c0: 6c 3a 74 6f 6b 65 6e 73 20 3d 20 5b 50 53 50 61  l:tokens = [PSPa
64d0: 72 73 65 72 5d 3a 3a 54 6f 6b 65 6e 69 7a 65 28  rser]::Tokenize(
64e0: 20 24 73 63 72 69 70 74 2c 20 5b 72 65 66 5d 24   $script, [ref]$
64f0: 70 61 72 73 65 72 72 6f 72 73 20 29 0d 0a 20 20  parserrors )..  
6500: 20 5b 41 72 72 61 79 5d 24 64 75 64 73 20 3d 20   [Array]$duds = 
6510: 24 67 6c 6f 62 61 6c 3a 74 6f 6b 65 6e 73 20 7c  $global:tokens |
6520: 20 57 68 65 72 65 2d 4f 62 6a 65 63 74 20 7b 20   Where-Object { 
6530: 24 5f 2e 54 79 70 65 20 2d 65 71 20 22 43 6f 6d  $_.Type -eq "Com
6540: 6d 61 6e 64 22 20 2d 61 6e 64 20 21 24 5f 2e 43  mand" -and !$_.C
6550: 6f 6e 74 65 6e 74 2e 43 6f 6e 74 61 69 6e 73 28  ontent.Contains(
6560: 27 2d 27 29 20 2d 61 6e 64 20 28 24 28 47 65 74  '-') -and ($(Get
6570: 2d 43 6f 6d 6d 61 6e 64 20 24 5f 2e 43 6f 6e 74  -Command $_.Cont
6580: 65 6e 74 20 2d 54 79 70 65 20 43 6d 64 6c 65 74  ent -Type Cmdlet
6590: 2c 46 75 6e 63 74 69 6f 6e 2c 45 78 74 65 72 6e  ,Function,Extern
65a0: 61 6c 53 63 72 69 70 74 20 2d 45 41 20 30 29 20  alScript -EA 0) 
65b0: 2d 65 71 20 24 4e 75 6c 6c 29 20 7d 0d 0a 20 20  -eq $Null) }..  
65c0: 20 5b 41 72 72 61 79 5d 3a 3a 52 65 76 65 72 73   [Array]::Revers
65d0: 65 28 20 24 64 75 64 73 20 29 0d 0a 20 20 20 0d  e( $duds )..   .
65e0: 0a 20 20 20 5b 73 74 72 69 6e 67 5b 5d 5d 24 53  .   [string[]]$S
65f0: 63 72 69 70 74 54 65 78 74 20 3d 20 22 24 73 63  criptText = "$sc
6600: 72 69 70 74 22 20 2d 73 70 6c 69 74 20 22 60 6e  ript" -split "`n
6610: 22 0d 0a 0d 0a 20 20 20 46 6f 72 45 61 63 68 28  "....   ForEach(
6620: 24 74 6f 6b 65 6e 20 69 6e 20 24 64 75 64 73 20  $token in $duds 
6630: 29 20 7b 0d 0a 20 20 20 20 20 20 23 20 72 65 70  ) {..      # rep
6640: 6c 61 63 65 20 3a 20 6e 6f 74 61 74 69 6f 6e 20  lace : notation 
6650: 77 69 74 68 20 6e 61 6d 65 73 70 61 63 65 20 6e  with namespace n
6660: 6f 74 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 69  otation..      i
6670: 66 28 20 24 74 6f 6b 65 6e 2e 43 6f 6e 74 65 6e  f( $token.Conten
6680: 74 2e 43 6f 6e 74 61 69 6e 73 28 22 3a 22 29 20  t.Contains(":") 
6690: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 24 6b  ) {..         $k
66a0: 65 79 2c 20 24 6c 6f 63 61 6c 6e 61 6d 65 20 3d  ey, $localname =
66b0: 20 24 74 6f 6b 65 6e 2e 43 6f 6e 74 65 6e 74 20   $token.Content 
66c0: 2d 73 70 6c 69 74 20 22 3a 22 0d 0a 20 20 20 20  -split ":"..    
66d0: 20 20 20 20 20 24 53 63 72 69 70 74 54 65 78 74       $ScriptText
66e0: 5b 28 24 74 6f 6b 65 6e 2e 53 74 61 72 74 4c 69  [($token.StartLi
66f0: 6e 65 20 2d 20 31 29 5d 20 3d 20 24 53 63 72 69  ne - 1)] = $Scri
6700: 70 74 54 65 78 74 5b 28 24 74 6f 6b 65 6e 2e 53  ptText[($token.S
6710: 74 61 72 74 4c 69 6e 65 20 2d 20 31 29 5d 2e 52  tartLine - 1)].R
6720: 65 6d 6f 76 65 28 20 24 74 6f 6b 65 6e 2e 53 74  emove( $token.St
6730: 61 72 74 43 6f 6c 75 6d 6e 20 2d 31 2c 20 24 74  artColumn -1, $t
6740: 6f 6b 65 6e 2e 4c 65 6e 67 74 68 20 29 2e 49 6e  oken.Length ).In
6750: 73 65 72 74 28 20 24 74 6f 6b 65 6e 2e 53 74 61  sert( $token.Sta
6760: 72 74 43 6f 6c 75 6d 6e 20 2d 31 2c 20 22 27 22  rtColumn -1, "'"
6770: 20 2b 20 24 28 24 73 63 72 69 70 74 3a 4e 61 6d   + $($script:Nam
6780: 65 53 70 61 63 65 48 61 73 68 5b 24 6b 65 79 5d  eSpaceHash[$key]
6790: 20 2b 20 24 6c 6f 63 61 6c 6e 61 6d 65 29 20 2b   + $localname) +
67a0: 20 22 27 22 20 29 0d 0a 20 20 20 20 20 20 7d 20   "'" )..      } 
67b0: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
67c0: 20 24 53 63 72 69 70 74 54 65 78 74 5b 28 24 74   $ScriptText[($t
67d0: 6f 6b 65 6e 2e 53 74 61 72 74 4c 69 6e 65 20 2d  oken.StartLine -
67e0: 20 31 29 5d 20 3d 20 24 53 63 72 69 70 74 54 65   1)] = $ScriptTe
67f0: 78 74 5b 28 24 74 6f 6b 65 6e 2e 53 74 61 72 74  xt[($token.Start
6800: 4c 69 6e 65 20 2d 20 31 29 5d 2e 52 65 6d 6f 76  Line - 1)].Remov
6810: 65 28 20 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43  e( $token.StartC
6820: 6f 6c 75 6d 6e 20 2d 31 2c 20 24 74 6f 6b 65 6e  olumn -1, $token
6830: 2e 4c 65 6e 67 74 68 20 29 2e 49 6e 73 65 72 74  .Length ).Insert
6840: 28 20 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43 6f  ( $token.StartCo
6850: 6c 75 6d 6e 20 2d 31 2c 20 22 27 22 20 2b 20 24  lumn -1, "'" + $
6860: 28 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61  ($script:NameSpa
6870: 63 65 48 61 73 68 5b 27 27 5d 20 2b 20 24 74 6f  ceHash[''] + $to
6880: 6b 65 6e 2e 43 6f 6e 74 65 6e 74 29 20 2b 20 22  ken.Content) + "
6890: 27 22 20 29 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  '" )..      }.. 
68a0: 20 20 20 20 20 23 20 69 6e 73 65 72 74 20 27 78       # insert 'x
68b0: 65 27 20 62 65 66 6f 72 65 20 65 76 65 72 79 74  e' before everyt
68c0: 68 69 6e 67 20 28 75 6e 6c 65 73 73 20 69 74 27  hing (unless it'
68d0: 73 20 61 20 76 61 6c 69 64 20 63 6f 6d 6d 61 6e  s a valid comman
68e0: 64 29 0d 0a 20 20 20 20 20 20 24 53 63 72 69 70  d)..      $Scrip
68f0: 74 54 65 78 74 5b 28 24 74 6f 6b 65 6e 2e 53 74  tText[($token.St
6900: 61 72 74 4c 69 6e 65 20 2d 20 31 29 5d 20 3d 20  artLine - 1)] = 
6910: 24 53 63 72 69 70 74 54 65 78 74 5b 28 24 74 6f  $ScriptText[($to
6920: 6b 65 6e 2e 53 74 61 72 74 4c 69 6e 65 20 2d 20  ken.StartLine - 
6930: 31 29 5d 2e 49 6e 73 65 72 74 28 20 24 74 6f 6b  1)].Insert( $tok
6940: 65 6e 2e 53 74 61 72 74 43 6f 6c 75 6d 6e 20 2d  en.StartColumn -
6950: 31 2c 20 22 78 65 20 22 20 29 0d 0a 20 20 20 7d  1, "xe " )..   }
6960: 0d 0a 20 20 20 57 72 69 74 65 2d 4f 75 74 70 75  ..   Write-Outpu
6970: 74 20 28 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5d  t ([ScriptBlock]
6980: 3a 3a 43 72 65 61 74 65 28 20 28 24 53 63 72 69  ::Create( ($Scri
6990: 70 74 54 65 78 74 20 2d 6a 6f 69 6e 20 22 60 6e  ptText -join "`n
69a0: 22 29 20 29 29 0d 0a 7d 0d 0a 20 20 20 0d 0a 45  ") ))..}..   ..E
69b0: 78 70 6f 72 74 2d 4d 6f 64 75 6c 65 4d 65 6d 62  xport-ModuleMemb
69c0: 65 72 20 2d 61 6c 69 61 73 20 2a 20 2d 66 75 6e  er -alias * -fun
69d0: 63 74 69 6f 6e 20 4e 65 77 2d 58 44 6f 63 75 6d  ction New-XDocum
69e0: 65 6e 74 2c 20 4e 65 77 2d 58 41 74 74 72 69 62  ent, New-XAttrib
69f0: 75 74 65 2c 20 4e 65 77 2d 58 45 6c 65 6d 65 6e  ute, New-XElemen
6a00: 74 2c 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d  t, Remove-XmlNam
6a10: 65 73 70 61 63 65 2c 20 43 6f 6e 76 65 72 74 2d  espace, Convert-
6a20: 58 6d 6c 2c 20 53 65 6c 65 63 74 2d 58 6d 6c 2c  Xml, Select-Xml,
6a30: 20 46 6f 72 6d 61 74 2d 58 6d 6c 0d 0a 0d 0a 23   Format-Xml....#
6a40: 20 53 49 47 20 23 20 42 65 67 69 6e 20 73 69 67   SIG # Begin sig
6a50: 6e 61 74 75 72 65 20 62 6c 6f 63 6b 0d 0a 23 20  nature block..# 
6a60: 4d 49 49 52 44 41 59 4a 4b 6f 5a 49 68 76 63 4e  MIIRDAYJKoZIhvcN
6a70: 41 51 63 43 6f 49 49 51 2f 54 43 43 45 50 6b 43  AQcCoIIQ/TCCEPkC
6a80: 41 51 45 78 43 7a 41 4a 42 67 55 72 44 67 4d 43  AQExCzAJBgUrDgMC
6a90: 47 67 55 41 4d 47 6b 47 43 69 73 47 41 51 51 42  GgUAMGkGCisGAQQB
6aa0: 0d 0a 23 20 67 6a 63 43 41 51 53 67 57 7a 42 5a  ..# gjcCAQSgWzBZ
6ab0: 4d 44 51 47 43 69 73 47 41 51 51 42 67 6a 63 43  MDQGCisGAQQBgjcC
6ac0: 41 52 34 77 4a 67 49 44 41 51 41 41 42 42 41 66  AR4wJgIDAQAABBAf
6ad0: 7a 44 74 67 57 55 73 49 54 72 63 6b 30 73 59 70  zDtgWUsITrck0sYp
6ae0: 66 76 4e 52 0d 0a 23 20 41 67 45 41 41 67 45 41  fvNR..# AgEAAgEA
6af0: 41 67 45 41 41 67 45 41 41 67 45 41 4d 43 45 77  AgEAAgEAAgEAMCEw
6b00: 43 51 59 46 4b 77 34 44 41 68 6f 46 41 41 51 55  CQYFKw4DAhoFAAQU
6b10: 6d 72 5a 6c 78 36 39 7a 43 67 6f 61 79 41 4c 56  mrZlx69zCgoayALV
6b20: 31 71 4a 41 62 4c 56 36 0d 0a 23 20 66 41 69 67  1qJAbLV6..# fAig
6b30: 67 67 35 43 4d 49 49 48 42 6a 43 43 42 4f 36 67  gg5CMIIHBjCCBO6g
6b40: 41 77 49 42 41 67 49 42 46 54 41 4e 42 67 6b 71  AwIBAgIBFTANBgkq
6b50: 68 6b 69 47 39 77 30 42 41 51 55 46 41 44 42 39  hkiG9w0BAQUFADB9
6b60: 4d 51 73 77 43 51 59 44 56 51 51 47 0d 0a 23 20  MQswCQYDVQQG..# 
6b70: 45 77 4a 4a 54 44 45 57 4d 42 51 47 41 31 55 45  EwJJTDEWMBQGA1UE
6b80: 43 68 4d 4e 55 33 52 68 63 6e 52 44 62 32 30 67  ChMNU3RhcnRDb20g
6b90: 54 48 52 6b 4c 6a 45 72 4d 43 6b 47 41 31 55 45  THRkLjErMCkGA1UE
6ba0: 43 78 4d 69 55 32 56 6a 64 58 4a 6c 49 45 52 70  CxMiU2VjdXJlIERp
6bb0: 0d 0a 23 20 5a 32 6c 30 59 57 77 67 51 32 56 79  ..# Z2l0YWwgQ2Vy
6bc0: 64 47 6c 6d 61 57 4e 68 64 47 55 67 55 32 6c 6e  dGlmaWNhdGUgU2ln
6bd0: 62 6d 6c 75 5a 7a 45 70 4d 43 63 47 41 31 55 45  bmluZzEpMCcGA1UE
6be0: 41 78 4d 67 55 33 52 68 63 6e 52 44 62 32 30 67  AxMgU3RhcnRDb20g
6bf0: 51 32 56 79 0d 0a 23 20 64 47 6c 6d 61 57 4e 68  Q2Vy..# dGlmaWNh
6c00: 64 47 6c 76 62 69 42 42 64 58 52 6f 62 33 4a 70  dGlvbiBBdXRob3Jp
6c10: 64 48 6b 77 48 68 63 4e 4d 44 63 78 4d 44 49 30  dHkwHhcNMDcxMDI0
6c20: 4d 6a 49 77 4d 54 51 31 57 68 63 4e 4d 54 49 78  MjIwMTQ1WhcNMTIx
6c30: 4d 44 49 30 4d 6a 49 77 0d 0a 23 20 4d 54 51 31  MDI0MjIw..# MTQ1
6c40: 57 6a 43 42 6a 44 45 4c 4d 41 6b 47 41 31 55 45  WjCBjDELMAkGA1UE
6c50: 42 68 4d 43 53 55 77 78 46 6a 41 55 42 67 4e 56  BhMCSUwxFjAUBgNV
6c60: 42 41 6f 54 44 56 4e 30 59 58 4a 30 51 32 39 74  BAoTDVN0YXJ0Q29t
6c70: 49 45 78 30 5a 43 34 78 4b 7a 41 70 0d 0a 23 20  IEx0ZC4xKzAp..# 
6c80: 42 67 4e 56 42 41 73 54 49 6c 4e 6c 59 33 56 79  BgNVBAsTIlNlY3Vy
6c90: 5a 53 42 45 61 57 64 70 64 47 46 73 49 45 4e 6c  ZSBEaWdpdGFsIENl
6ca0: 63 6e 52 70 5a 6d 6c 6a 59 58 52 6c 49 46 4e 70  cnRpZmljYXRlIFNp
6cb0: 5a 32 35 70 62 6d 63 78 4f 44 41 32 42 67 4e 56  Z25pbmcxODA2BgNV
6cc0: 0d 0a 23 20 42 41 4d 54 4c 31 4e 30 59 58 4a 30  ..# BAMTL1N0YXJ0
6cd0: 51 32 39 74 49 45 4e 73 59 58 4e 7a 49 44 49 67  Q29tIENsYXNzIDIg
6ce0: 55 48 4a 70 62 57 46 79 65 53 42 4a 62 6e 52 6c  UHJpbWFyeSBJbnRl
6cf0: 63 6d 31 6c 5a 47 6c 68 64 47 55 67 54 32 4a 71  cm1lZGlhdGUgT2Jq
6d00: 5a 57 4e 30 0d 0a 23 20 49 45 4e 42 4d 49 49 42  ZWN0..# IENBMIIB
6d10: 49 6a 41 4e 42 67 6b 71 68 6b 69 47 39 77 30 42  IjANBgkqhkiG9w0B
6d20: 41 51 45 46 41 41 4f 43 41 51 38 41 4d 49 49 42  AQEFAAOCAQ8AMIIB
6d30: 43 67 4b 43 41 51 45 41 79 69 4f 4c 49 6a 55 65  CgKCAQEAyiOLIjUe
6d40: 6d 71 41 62 50 4a 31 4a 0d 0a 23 20 30 44 38 4d  mqAbPJ1J..# 0D8M
6d50: 6c 7a 67 57 4b 62 72 34 66 59 6c 62 52 56 6a 76  lzgWKbr4fYlbRVjv
6d60: 68 48 44 74 66 68 46 4e 36 52 51 78 71 30 50 6a  hHDtfhFN6RQxq0Pj
6d70: 54 51 78 52 67 57 7a 77 46 51 4e 4b 4a 43 64 55  TQxRgWzwFQNKJCdU
6d80: 35 66 74 4b 6f 4d 35 4e 34 59 53 6a 0d 0a 23 20  5ftKoM5N4YSj..# 
6d90: 49 64 36 5a 4e 61 76 63 53 61 36 2f 4d 63 56 6e  Id6ZNavcSa6/McVn
6da0: 68 44 41 51 6d 2b 38 48 33 48 57 6f 44 30 33 30  hDAQm+8H3HWoD030
6db0: 4e 56 4f 78 62 6a 67 44 2f 49 68 33 48 61 56 33  NVOxbjgD/Ih3HaV3
6dc0: 2f 7a 39 31 35 39 6e 6e 76 79 78 51 45 63 6b 52  /z9159nnvyxQEckR
6dd0: 0d 0a 23 20 5a 66 70 4a 42 32 4b 66 6b 36 61 48  ..# ZfpJB2Kfk6aH
6de0: 71 57 33 4a 6e 53 76 52 65 2b 58 56 5a 53 75 66  qW3JnSvRe+XVZSuf
6df0: 44 56 43 65 2f 76 74 78 47 53 45 77 4b 43 61 4e  DVCe/vtxGSEwKCaN
6e00: 72 73 4c 63 39 70 62 6f 55 6f 59 49 43 33 6f 79  rsLc9pboUoYIC3oy
6e10: 7a 57 6f 55 0d 0a 23 20 54 5a 36 35 2b 63 30 48  zWoU..# TZ65+c0H
6e20: 34 70 61 52 38 63 38 65 4b 2f 6d 43 39 31 34 6d  4paR8c8eK/mC914m
6e30: 42 6f 36 4e 30 64 51 35 31 32 2f 62 6b 53 64 61  Bo6N0dQ512/bkSda
6e40: 65 59 39 59 61 51 70 47 74 57 2f 68 2f 57 2f 46  eY9YaQpGtW/h/W/F
6e50: 6b 62 51 52 54 33 73 43 0d 0a 23 20 70 74 74 4c  kbQRT3sC..# pttL
6e60: 56 6c 49 6a 6e 6b 75 59 34 72 39 2b 7a 76 71 68  VlIjnkuY4r9+zvqh
6e70: 54 6f 50 6a 78 63 66 44 59 45 66 2b 58 44 38 56  ToPjxcfDYEf+XD8V
6e80: 47 6b 41 71 6c 65 38 41 61 38 68 51 2b 4d 31 71  GkAqle8Aa8hQ+M1q
6e90: 47 64 51 6a 41 79 65 38 4f 7a 62 56 0d 0a 23 20  GdQjAye8OzbV..# 
6ea0: 75 55 4f 77 37 77 49 44 41 51 41 42 6f 34 49 43  uUOw7wIDAQABo4IC
6eb0: 66 7a 43 43 41 6e 73 77 44 41 59 44 56 52 30 54  fzCCAnswDAYDVR0T
6ec0: 42 41 55 77 41 77 45 42 2f 7a 41 4c 42 67 4e 56  BAUwAwEB/zALBgNV
6ed0: 48 51 38 45 42 41 4d 43 41 51 59 77 48 51 59 44  HQ8EBAMCAQYwHQYD
6ee0: 0d 0a 23 20 56 52 30 4f 42 42 59 45 46 4e 42 4f  ..# VR0OBBYEFNBO
6ef0: 44 30 43 5a 62 4c 68 4c 47 57 38 37 4b 4c 6a 67  D0CZbLhLGW87KLjg
6f00: 34 34 67 48 4e 4b 71 33 4d 49 47 6f 42 67 4e 56  44gHNKq3MIGoBgNV
6f10: 48 53 4d 45 67 61 41 77 67 5a 32 41 46 45 34 4c  HSMEgaAwgZ2AFE4L
6f20: 37 78 71 6b 0d 0a 23 20 51 46 75 6c 46 32 6d 48  7xqk..# QFulF2mH
6f30: 4d 4d 6f 30 61 45 50 51 51 61 37 79 6f 59 47 42  MMo0aEPQQa7yoYGB
6f40: 70 48 38 77 66 54 45 4c 4d 41 6b 47 41 31 55 45  pH8wfTELMAkGA1UE
6f50: 42 68 4d 43 53 55 77 78 46 6a 41 55 42 67 4e 56  BhMCSUwxFjAUBgNV
6f60: 42 41 6f 54 44 56 4e 30 0d 0a 23 20 59 58 4a 30  BAoTDVN0..# YXJ0
6f70: 51 32 39 74 49 45 78 30 5a 43 34 78 4b 7a 41 70  Q29tIEx0ZC4xKzAp
6f80: 42 67 4e 56 42 41 73 54 49 6c 4e 6c 59 33 56 79  BgNVBAsTIlNlY3Vy
6f90: 5a 53 42 45 61 57 64 70 64 47 46 73 49 45 4e 6c  ZSBEaWdpdGFsIENl
6fa0: 63 6e 52 70 5a 6d 6c 6a 59 58 52 6c 0d 0a 23 20  cnRpZmljYXRl..# 
6fb0: 49 46 4e 70 5a 32 35 70 62 6d 63 78 4b 54 41 6e  IFNpZ25pbmcxKTAn
6fc0: 42 67 4e 56 42 41 4d 54 49 46 4e 30 59 58 4a 30  BgNVBAMTIFN0YXJ0
6fd0: 51 32 39 74 49 45 4e 6c 63 6e 52 70 5a 6d 6c 6a  Q29tIENlcnRpZmlj
6fe0: 59 58 52 70 62 32 34 67 51 58 56 30 61 47 39 79  YXRpb24gQXV0aG9y
6ff0: 0d 0a 23 20 61 58 52 35 67 67 45 42 4d 41 6b 47  ..# aXR5ggEBMAkG
7000: 41 31 55 64 45 67 51 43 4d 41 41 77 50 51 59 49  A1UdEgQCMAAwPQYI
7010: 4b 77 59 42 42 51 55 48 41 51 45 45 4d 54 41 76  KwYBBQUHAQEEMTAv
7020: 4d 43 30 47 43 43 73 47 41 51 55 46 42 7a 41 43  MC0GCCsGAQUFBzAC
7030: 68 69 46 6f 0d 0a 23 20 64 48 52 77 4f 69 38 76  hiFo..# dHRwOi8v
7040: 64 33 64 33 4c 6e 4e 30 59 58 4a 30 63 33 4e 73  d3d3LnN0YXJ0c3Ns
7050: 4c 6d 4e 76 62 53 39 7a 5a 6e 4e 6a 59 53 35 6a  LmNvbS9zZnNjYS5j
7060: 63 6e 51 77 59 41 59 44 56 52 30 66 42 46 6b 77  cnQwYAYDVR0fBFkw
7070: 56 7a 41 73 6f 43 71 67 0d 0a 23 20 4b 49 59 6d  VzAsoCqg..# KIYm
7080: 61 48 52 30 63 44 6f 76 4c 32 4e 6c 63 6e 51 75  aHR0cDovL2NlcnQu
7090: 63 33 52 68 63 6e 52 6a 62 32 30 75 62 33 4a 6e  c3RhcnRjb20ub3Jn
70a0: 4c 33 4e 6d 63 32 4e 68 4c 57 4e 79 62 43 35 6a  L3Nmc2NhLWNybC5j
70b0: 63 6d 77 77 4a 36 41 6c 6f 43 4f 47 0d 0a 23 20  cmwwJ6AloCOG..# 
70c0: 49 57 68 30 64 48 41 36 4c 79 39 6a 63 6d 77 75  IWh0dHA6Ly9jcmwu
70d0: 63 33 52 68 63 6e 52 7a 63 32 77 75 59 32 39 74  c3RhcnRzc2wuY29t
70e0: 4c 33 4e 6d 63 32 4e 68 4c 6d 4e 79 62 44 43 42  L3Nmc2NhLmNybDCB
70f0: 67 67 59 44 56 52 30 67 42 48 73 77 65 54 42 33  ggYDVR0gBHsweTB3
7100: 0d 0a 23 20 42 67 73 72 42 67 45 45 41 59 47 31  ..# BgsrBgEEAYG1
7110: 4e 77 45 42 42 54 42 6f 4d 43 38 47 43 43 73 47  NwEBBTBoMC8GCCsG
7120: 41 51 55 46 42 77 49 42 46 69 4e 6f 64 48 52 77  AQUFBwIBFiNodHRw
7130: 4f 69 38 76 59 32 56 79 64 43 35 7a 64 47 46 79  Oi8vY2VydC5zdGFy
7140: 64 47 4e 76 0d 0a 23 20 62 53 35 76 63 6d 63 76  dGNv..# bS5vcmcv
7150: 63 47 39 73 61 57 4e 35 4c 6e 42 6b 5a 6a 41 31  cG9saWN5LnBkZjA1
7160: 42 67 67 72 42 67 45 46 42 51 63 43 41 52 59 70  BggrBgEFBQcCARYp
7170: 61 48 52 30 63 44 6f 76 4c 32 4e 6c 63 6e 51 75  aHR0cDovL2NlcnQu
7180: 63 33 52 68 63 6e 52 6a 0d 0a 23 20 62 32 30 75  c3RhcnRj..# b20u
7190: 62 33 4a 6e 4c 32 6c 75 64 47 56 79 62 57 56 6b  b3JnL2ludGVybWVk
71a0: 61 57 46 30 5a 53 35 77 5a 47 59 77 45 51 59 4a  aWF0ZS5wZGYwEQYJ
71b0: 59 49 5a 49 41 59 62 34 51 67 45 42 42 41 51 44  YIZIAYb4QgEBBAQD
71c0: 41 67 41 42 4d 46 41 47 43 57 43 47 0d 0a 23 20  AgABMFAGCWCG..# 
71d0: 53 41 47 47 2b 45 49 42 44 51 52 44 46 6b 46 54  SAGG+EIBDQRDFkFT
71e0: 64 47 46 79 64 45 4e 76 62 53 42 44 62 47 46 7a  dGFydENvbSBDbGFz
71f0: 63 79 41 79 49 46 42 79 61 57 31 68 63 6e 6b 67  cyAyIFByaW1hcnkg
7200: 53 57 35 30 5a 58 4a 74 5a 57 52 70 59 58 52 6c  SW50ZXJtZWRpYXRl
7210: 0d 0a 23 20 49 45 39 69 61 6d 56 6a 64 43 42 54  ..# IE9iamVjdCBT
7220: 61 57 64 75 61 57 35 6e 49 45 4e 6c 63 6e 52 70  aWduaW5nIENlcnRp
7230: 5a 6d 6c 6a 59 58 52 6c 63 7a 41 4e 42 67 6b 71  ZmljYXRlczANBgkq
7240: 68 6b 69 47 39 77 30 42 41 51 55 46 41 41 4f 43  hkiG9w0BAQUFAAOC
7250: 41 67 45 41 0d 0a 23 20 55 4b 4c 51 6d 50 52 77  AgEA..# UKLQmPRw
7260: 51 48 41 41 74 6d 37 73 6c 6f 30 31 66 58 75 67  QHAAtm7slo01fXug
7270: 4e 78 70 2f 67 54 4a 59 33 2b 61 49 68 68 73 38  Nxp/gTJY3+aIhhs8
7280: 47 6f 67 2b 49 77 49 73 54 37 35 51 31 6b 4c 73  Gog+IwIsT75Q1kLs
7290: 6e 6e 66 55 51 66 62 46 0d 0a 23 20 70 6c 2f 55  nnfUQfbF..# pl/U
72a0: 72 6c 42 30 32 46 51 53 4f 5a 2b 34 44 6e 32 53  rlB02FQSOZ+4Dn2S
72b0: 39 6c 37 65 77 58 51 68 49 58 77 74 75 77 4b 69  9l7ewXQhIXwtuwKi
72c0: 51 67 33 4e 64 44 39 74 75 41 38 4f 68 75 33 65  Qg3NdD9tuA8Ohu3e
72d0: 59 31 63 50 6c 37 65 4f 61 59 34 51 0d 0a 23 20  Y1cPl7eOaY4Q..# 
72e0: 71 76 71 53 6a 38 2b 4f 6c 37 66 30 5a 70 36 71  qvqSj8+Ol7f0Zp6q
72f0: 54 47 69 52 5a 78 43 76 2f 61 4e 50 49 62 70 30  TGiRZxCv/aNPIbp0
7300: 76 33 72 44 39 47 64 68 47 74 50 76 4b 4c 52 53  v3rD9GdhGtPvKLRS
7310: 30 43 71 4b 67 73 48 32 6e 77 65 6f 76 6b 34 68  0CqKgsH2nweovk4h
7320: 0d 0a 23 20 66 58 6a 52 51 6a 70 35 4e 35 50 6e  ..# fXjRQjp5N5Pn
7330: 66 42 57 31 58 32 44 43 53 54 71 6d 6a 77 65 57  fBW1X2DCSTqmjweW
7340: 68 6c 6c 65 51 32 4b 44 67 39 33 57 36 31 54 77  hlleQ2KDg93W61Tw
7350: 36 4d 36 79 47 4a 41 47 47 33 47 6e 7a 62 77 61  6M6yGJAGG3Gnzbwa
7360: 64 46 39 42 0d 0a 23 20 55 57 38 38 57 63 52 73  dF9B..# UW88WcRs
7370: 6e 4f 57 48 49 75 31 34 37 33 62 4e 4b 42 6e 66  nOWHIu1473bNKBnf
7380: 31 4f 4b 78 78 41 51 31 2f 33 57 77 4a 47 5a 57  1OKxxAQ1/3WwJGZW
7390: 4a 35 55 78 68 43 70 41 2b 77 72 2b 6c 2b 4e 62  J5UxhCpA+wr+l+Nb
73a0: 48 50 35 78 35 58 5a 35 0d 0a 23 20 38 78 68 68  HP5x5XZ5..# 8xhh
73b0: 78 75 37 57 51 37 72 77 49 44 6a 38 64 2f 6c 47  xu7WQ7rwIDj8d/lG
73c0: 55 39 41 36 45 61 65 58 76 33 4e 77 77 63 62 49  U9A6EaeXv3NwwcbI
73d0: 6f 2f 61 6f 75 35 76 39 79 39 34 2b 6c 65 41 59  o/aou5v9y94+leAY
73e0: 71 72 38 62 62 42 4e 41 46 54 58 31 0d 0a 23 20  qr8bbBNAFTX1..# 
73f0: 70 54 78 51 4a 79 6c 66 73 4b 72 6b 42 38 45 4f  pTxQJylfsKrkB8EO
7400: 49 78 2b 5a 72 6c 77 61 30 57 45 33 32 41 67 78  Ix+Zrlwa0WE32Agx
7410: 61 4b 68 57 41 47 68 6f 2f 50 68 37 64 36 55 58  aKhWAGho/Ph7d6UX
7420: 55 53 6e 35 62 77 32 2b 75 73 76 68 64 6b 57 34  USn5bw2+usvhdkW4
7430: 0d 0a 23 20 6e 70 55 6f 78 41 6b 33 52 68 54 33  ..# npUoxAk3RhT3
7440: 2b 6e 75 70 69 31 66 69 63 34 4e 47 37 69 51 47  +nupi1fic4NG7iQG
7450: 38 34 50 5a 32 62 62 53 35 59 78 4f 6d 61 49 49  84PZ2bbS5YxOmaII
7460: 73 49 41 78 63 6c 66 32 35 46 77 73 73 57 6a 69  sIAxclf25FwssWji
7470: 65 4d 77 56 0d 0a 23 20 30 6b 39 31 6e 6c 7a 55  eMwV..# 0k91nlzU
7480: 46 42 31 48 51 4d 75 45 36 54 75 72 41 61 6b 53  FB1HQMuE6TurAakS
7490: 37 74 6e 49 4b 54 4a 2b 5a 57 4a 42 44 64 75 55  7tnIKTJ+ZWJBDduU
74a0: 62 63 44 31 30 39 34 58 33 38 4f 76 4d 4f 2f 2b  bcD1094X38OvMO/+
74b0: 2b 48 35 53 34 35 4b 69 0d 0a 23 20 33 72 2f 31  +H5S45Ki..# 3r/1
74c0: 33 59 54 6d 30 41 57 47 4f 76 4d 46 6b 45 41 46  3YTm0AWGOvMFkEAF
74d0: 38 4c 62 75 45 79 65 63 4b 54 61 4a 4d 54 69 4e  8LbuEyecKTaJMTiN
74e0: 52 66 42 47 4d 67 6e 71 47 42 66 71 69 4f 6e 7a  RfBGMgnqGBfqiOnz
74f0: 78 78 52 56 4e 4f 77 32 68 53 51 70 0d 0a 23 20  xxRVNOw2hSQp..# 
7500: 30 42 2b 43 39 49 6a 2f 71 33 37 35 7a 33 69 41  0B+C9Ij/q375z3iA
7510: 49 59 43 62 4b 55 64 2f 35 53 53 45 4c 63 6d 6c  IYCbKUd/5SSELcml
7520: 4c 6c 2b 42 75 4e 6b 6e 58 45 30 77 67 67 63 30  Ll+BuNknXE0wggc0
7530: 4d 49 49 47 48 4b 41 44 41 67 45 43 41 67 46 52  MIIGHKADAgECAgFR
7540: 0d 0a 23 20 4d 41 30 47 43 53 71 47 53 49 62 33  ..# MA0GCSqGSIb3
7550: 44 51 45 42 42 51 55 41 4d 49 47 4d 4d 51 73 77  DQEBBQUAMIGMMQsw
7560: 43 51 59 44 56 51 51 47 45 77 4a 4a 54 44 45 57  CQYDVQQGEwJJTDEW
7570: 4d 42 51 47 41 31 55 45 43 68 4d 4e 55 33 52 68  MBQGA1UEChMNU3Rh
7580: 63 6e 52 44 0d 0a 23 20 62 32 30 67 54 48 52 6b  cnRD..# b20gTHRk
7590: 4c 6a 45 72 4d 43 6b 47 41 31 55 45 43 78 4d 69  LjErMCkGA1UECxMi
75a0: 55 32 56 6a 64 58 4a 6c 49 45 52 70 5a 32 6c 30  U2VjdXJlIERpZ2l0
75b0: 59 57 77 67 51 32 56 79 64 47 6c 6d 61 57 4e 68  YWwgQ2VydGlmaWNh
75c0: 64 47 55 67 55 32 6c 6e 0d 0a 23 20 62 6d 6c 75  dGUgU2ln..# bmlu
75d0: 5a 7a 45 34 4d 44 59 47 41 31 55 45 41 78 4d 76  ZzE4MDYGA1UEAxMv
75e0: 55 33 52 68 63 6e 52 44 62 32 30 67 51 32 78 68  U3RhcnRDb20gQ2xh
75f0: 63 33 4d 67 4d 69 42 51 63 6d 6c 74 59 58 4a 35  c3MgMiBQcmltYXJ5
7600: 49 45 6c 75 64 47 56 79 62 57 56 6b 0d 0a 23 20  IEludGVybWVk..# 
7610: 61 57 46 30 5a 53 42 50 59 6d 70 6c 59 33 51 67  aWF0ZSBPYmplY3Qg
7620: 51 30 45 77 48 68 63 4e 4d 44 6b 78 4d 54 45 78  Q0EwHhcNMDkxMTEx
7630: 4d 44 41 77 4d 44 41 78 57 68 63 4e 4d 54 45 78  MDAwMDAxWhcNMTEx
7640: 4d 54 45 78 4d 44 59 79 4f 44 51 7a 57 6a 43 42  MTExMDYyODQzWjCB
7650: 0d 0a 23 20 71 44 45 4c 4d 41 6b 47 41 31 55 45  ..# qDELMAkGA1UE
7660: 42 68 4d 43 56 56 4d 78 45 54 41 50 42 67 4e 56  BhMCVVMxETAPBgNV
7670: 42 41 67 54 43 45 35 6c 64 79 42 5a 62 33 4a 72  BAgTCE5ldyBZb3Jr
7680: 4d 52 63 77 46 51 59 44 56 51 51 48 45 77 35 58  MRcwFQYDVQQHEw5X
7690: 5a 58 4e 30 0d 0a 23 20 49 45 68 6c 62 6e 4a 70  ZXN0..# IEhlbnJp
76a0: 5a 58 52 30 59 54 45 74 4d 43 73 47 41 31 55 45  ZXR0YTEtMCsGA1UE
76b0: 43 78 4d 6b 55 33 52 68 63 6e 52 44 62 32 30 67  CxMkU3RhcnRDb20g
76c0: 56 6d 56 79 61 57 5a 70 5a 57 51 67 51 32 56 79  VmVyaWZpZWQgQ2Vy
76d0: 64 47 6c 6d 61 57 4e 68 0d 0a 23 20 64 47 55 67  dGlmaWNh..# dGUg
76e0: 54 57 56 74 59 6d 56 79 4d 52 55 77 45 77 59 44  TWVtYmVyMRUwEwYD
76f0: 56 51 51 44 45 77 78 4b 62 32 56 73 49 45 4a 6c  VQQDEwxKb2VsIEJl
7700: 62 6d 35 6c 64 48 51 78 4a 7a 41 6c 42 67 6b 71  bm5ldHQxJzAlBgkq
7710: 68 6b 69 47 39 77 30 42 43 51 45 57 0d 0a 23 20  hkiG9w0BCQEW..# 
7720: 47 45 70 68 65 57 74 31 62 45 42 49 64 57 52 6b  GEpheWt1bEBIdWRk
7730: 62 47 56 6b 54 57 46 7a 63 32 56 7a 4c 6d 39 79  bGVkTWFzc2VzLm9y
7740: 5a 7a 43 43 41 53 49 77 44 51 59 4a 4b 6f 5a 49  ZzCCASIwDQYJKoZI
7750: 68 76 63 4e 41 51 45 42 42 51 41 44 67 67 45 50  hvcNAQEBBQADggEP
7760: 0d 0a 23 20 41 44 43 43 41 51 6f 43 67 67 45 42  ..# ADCCAQoCggEB
7770: 41 4d 66 6a 49 74 4a 6a 4d 57 56 61 51 54 45 43  AMfjItJjMWVaQTEC
7780: 76 6e 56 2f 73 77 48 51 50 30 46 54 59 55 76 52  vnV/swHQP0FTYUvR
7790: 69 7a 4b 7a 55 75 62 47 4e 44 4e 61 6a 37 76 32  izKzUubGNDNaj7v2
77a0: 64 41 57 43 0d 0a 23 20 72 41 41 2b 58 45 30 6c  dAWC..# rAA+XE0l
77b0: 74 39 4a 42 4e 46 74 43 43 63 77 65 44 7a 70 68  t9JBNFtCCcweDzph
77c0: 62 57 55 2f 41 41 59 30 73 45 50 75 4b 6f 62 56  bWU/AAY0sEPuKobV
77d0: 35 55 47 4f 4c 4a 76 57 2f 44 63 48 41 57 64 4e  5UGOLJvW/DcHAWdN
77e0: 42 2f 77 52 72 72 55 44 0d 0a 23 20 64 70 63 73  B/wRrrUD..# dpcs
77f0: 61 70 51 30 49 78 78 4b 71 70 52 54 72 62 75 35  apQ0IxxKqpRTrbu5
7800: 55 47 74 34 34 32 2b 36 68 4a 52 65 47 54 6e 48  UGt442+6hJReGTnH
7810: 7a 51 62 58 38 46 6f 47 4d 6a 74 37 73 4c 72 48  zQbX8FoGMjt7sLrH
7820: 63 33 61 34 77 54 48 33 6e 4d 63 30 0d 0a 23 20  c3a4wTH3nMc0..# 
7830: 55 2f 54 7a 6e 45 31 33 61 7a 66 64 74 50 4f 66  U/TznE13azfdtPOf
7840: 72 47 7a 68 79 42 46 4a 77 32 48 31 67 35 41 67  rGzhyBFJw2H1g5Ag
7850: 32 63 6d 57 6b 77 73 51 72 4f 42 55 2b 6b 46 62  2cmWkwsQrOBU+kFb
7860: 44 34 55 6a 78 49 79 75 73 2f 5a 39 55 51 54 32  D4UjxIyus/Z9UQT2
7870: 0d 0a 23 20 52 37 62 49 32 52 34 4c 2f 76 57 4d  ..# R7bI2R4L/vWM
7880: 33 55 69 4e 6a 34 4d 38 4c 49 75 4e 36 55 61 49  3UiNj4M8LIuN6UaI
7890: 72 68 35 53 41 38 71 2f 55 76 44 75 6d 76 4d 7a  rh5SA8q/UvDumvMz
78a0: 6a 6b 78 47 48 4e 70 50 5a 73 41 50 61 4f 53 2b  jkxGHNpPZsAPaOS+
78b0: 52 4e 6d 55 0d 0a 23 20 47 6f 36 58 38 33 6a 69  RNmU..# Go6X83ji
78c0: 6a 6a 62 4c 33 39 50 4a 74 4d 58 2b 64 6f 43 6a  jjbL39PJtMX+doCj
78d0: 53 2f 6c 6e 63 6c 77 73 35 6c 55 43 41 77 45 41  S/lnclws5lUCAwEA
78e0: 41 61 4f 43 41 34 45 77 67 67 4e 39 4d 41 6b 47  AaOCA4EwggN9MAkG
78f0: 41 31 55 64 45 77 51 43 0d 0a 23 20 4d 41 41 77  A1UdEwQC..# MAAw
7900: 44 67 59 44 56 52 30 50 41 51 48 2f 42 41 51 44  DgYDVR0PAQH/BAQD
7910: 41 67 65 41 4d 44 6f 47 41 31 55 64 4a 51 45 42  AgeAMDoGA1UdJQEB
7920: 2f 77 51 77 4d 43 34 47 43 43 73 47 41 51 55 46  /wQwMC4GCCsGAQUF
7930: 42 77 4d 44 42 67 6f 72 42 67 45 45 0d 0a 23 20  BwMDBgorBgEE..# 
7940: 41 59 49 33 41 67 45 56 42 67 6f 72 42 67 45 45  AYI3AgEVBgorBgEE
7950: 41 59 49 33 41 67 45 57 42 67 6f 72 42 67 45 45  AYI3AgEWBgorBgEE
7960: 41 59 49 33 43 67 4d 4e 4d 42 30 47 41 31 55 64  AYI3CgMNMB0GA1Ud
7970: 44 67 51 57 42 42 52 35 74 57 50 47 43 4c 4e 51  DgQWBBR5tWPGCLNQ
7980: 0d 0a 23 20 79 43 58 49 35 66 59 35 56 69 61 79  ..# yCXI5fY5Viay
7990: 4b 6a 36 78 41 54 43 42 71 41 59 44 56 52 30 6a  Kj6xATCBqAYDVR0j
79a0: 42 49 47 67 4d 49 47 64 67 42 54 51 54 67 39 41  BIGgMIGdgBTQTg9A
79b0: 6d 57 79 34 53 78 6c 76 4f 79 69 34 34 4f 4f 49  mWy4SxlvOyi44OOI
79c0: 42 7a 53 71 0d 0a 23 20 74 36 47 42 67 61 52 2f  BzSq..# t6GBgaR/
79d0: 4d 48 30 78 43 7a 41 4a 42 67 4e 56 42 41 59 54  MH0xCzAJBgNVBAYT
79e0: 41 6b 6c 4d 4d 52 59 77 46 41 59 44 56 51 51 4b  AklMMRYwFAYDVQQK
79f0: 45 77 31 54 64 47 46 79 64 45 4e 76 62 53 42 4d  Ew1TdGFydENvbSBM
7a00: 64 47 51 75 4d 53 73 77 0d 0a 23 20 4b 51 59 44  dGQuMSsw..# KQYD
7a10: 56 51 51 4c 45 79 4a 54 5a 57 4e 31 63 6d 55 67  VQQLEyJTZWN1cmUg
7a20: 52 47 6c 6e 61 58 52 68 62 43 42 44 5a 58 4a 30  RGlnaXRhbCBDZXJ0
7a30: 61 57 5a 70 59 32 46 30 5a 53 42 54 61 57 64 75  aWZpY2F0ZSBTaWdu
7a40: 61 57 35 6e 4d 53 6b 77 4a 77 59 44 0d 0a 23 20  aW5nMSkwJwYD..# 
7a50: 56 51 51 44 45 79 42 54 64 47 46 79 64 45 4e 76  VQQDEyBTdGFydENv
7a60: 62 53 42 44 5a 58 4a 30 61 57 5a 70 59 32 46 30  bSBDZXJ0aWZpY2F0
7a70: 61 57 39 75 49 45 46 31 64 47 68 76 63 6d 6c 30  aW9uIEF1dGhvcml0
7a80: 65 59 49 42 46 54 43 43 41 55 49 47 41 31 55 64  eYIBFTCCAUIGA1Ud
7a90: 0d 0a 23 20 49 41 53 43 41 54 6b 77 67 67 45 31  ..# IASCATkwggE1
7aa0: 4d 49 49 42 4d 51 59 4c 4b 77 59 42 42 41 47 42  MIIBMQYLKwYBBAGB
7ab0: 74 54 63 42 41 67 45 77 67 67 45 67 4d 43 34 47  tTcBAgEwggEgMC4G
7ac0: 43 43 73 47 41 51 55 46 42 77 49 42 46 69 4a 6f  CCsGAQUFBwIBFiJo
7ad0: 64 48 52 77 0d 0a 23 20 4f 69 38 76 64 33 64 33  dHRw..# Oi8vd3d3
7ae0: 4c 6e 4e 30 59 58 4a 30 63 33 4e 73 4c 6d 4e 76  LnN0YXJ0c3NsLmNv
7af0: 62 53 39 77 62 32 78 70 59 33 6b 75 63 47 52 6d  bS9wb2xpY3kucGRm
7b00: 4d 44 51 47 43 43 73 47 41 51 55 46 42 77 49 42  MDQGCCsGAQUFBwIB
7b10: 46 69 68 6f 64 48 52 77 0d 0a 23 20 4f 69 38 76  FihodHRw..# Oi8v
7b20: 64 33 64 33 4c 6e 4e 30 59 58 4a 30 63 33 4e 73  d3d3LnN0YXJ0c3Ns
7b30: 4c 6d 4e 76 62 53 39 70 62 6e 52 6c 63 6d 31 6c  LmNvbS9pbnRlcm1l
7b40: 5a 47 6c 68 64 47 55 75 63 47 52 6d 4d 49 47 33  ZGlhdGUucGRmMIG3
7b50: 42 67 67 72 42 67 45 46 42 51 63 43 0d 0a 23 20  BggrBgEFBQcC..# 
7b60: 41 6a 43 42 71 6a 41 55 46 67 31 54 64 47 46 79  AjCBqjAUFg1TdGFy
7b70: 64 45 4e 76 62 53 42 4d 64 47 51 75 4d 41 4d 43  dENvbSBMdGQuMAMC
7b80: 41 51 45 61 67 5a 46 4d 61 57 31 70 64 47 56 6b  AQEagZFMaW1pdGVk
7b90: 49 45 78 70 59 57 4a 70 62 47 6c 30 65 53 77 67  IExpYWJpbGl0eSwg
7ba0: 0d 0a 23 20 63 32 56 6c 49 48 4e 6c 59 33 52 70  ..# c2VlIHNlY3Rp
7bb0: 62 32 34 67 4b 6b 78 6c 5a 32 46 73 49 45 78 70  b24gKkxlZ2FsIExp
7bc0: 62 57 6c 30 59 58 52 70 62 32 35 7a 4b 69 42 76  bWl0YXRpb25zKiBv
7bd0: 5a 69 42 30 61 47 55 67 55 33 52 68 63 6e 52 44  ZiB0aGUgU3RhcnRD
7be0: 62 32 30 67 0d 0a 23 20 51 32 56 79 64 47 6c 6d  b20g..# Q2VydGlm
7bf0: 61 57 4e 68 64 47 6c 76 62 69 42 42 64 58 52 6f  aWNhdGlvbiBBdXRo
7c00: 62 33 4a 70 64 48 6b 67 55 47 39 73 61 57 4e 35  b3JpdHkgUG9saWN5
7c10: 49 47 46 32 59 57 6c 73 59 57 4a 73 5a 53 42 68  IGF2YWlsYWJsZSBh
7c20: 64 43 42 6f 64 48 52 77 0d 0a 23 20 4f 69 38 76  dCBodHRw..# Oi8v
7c30: 64 33 64 33 4c 6e 4e 30 59 58 4a 30 63 33 4e 73  d3d3LnN0YXJ0c3Ns
7c40: 4c 6d 4e 76 62 53 39 77 62 32 78 70 59 33 6b 75  LmNvbS9wb2xpY3ku
7c50: 63 47 52 6d 4d 47 4d 47 41 31 55 64 48 77 52 63  cGRmMGMGA1UdHwRc
7c60: 4d 46 6f 77 4b 36 41 70 6f 43 65 47 0d 0a 23 20  MFowK6ApoCeG..# 
7c70: 4a 57 68 30 64 48 41 36 4c 79 39 33 64 33 63 75  JWh0dHA6Ly93d3cu
7c80: 63 33 52 68 63 6e 52 7a 63 32 77 75 59 32 39 74  c3RhcnRzc2wuY29t
7c90: 4c 32 4e 79 64 47 4d 79 4c 57 4e 79 62 43 35 6a  L2NydGMyLWNybC5j
7ca0: 63 6d 77 77 4b 36 41 70 6f 43 65 47 4a 57 68 30  cmwwK6ApoCeGJWh0
7cb0: 0d 0a 23 20 64 48 41 36 4c 79 39 6a 63 6d 77 75  ..# dHA6Ly9jcmwu
7cc0: 63 33 52 68 63 6e 52 7a 63 32 77 75 59 32 39 74  c3RhcnRzc2wuY29t
7cd0: 4c 32 4e 79 64 47 4d 79 4c 57 4e 79 62 43 35 6a  L2NydGMyLWNybC5j
7ce0: 63 6d 77 77 67 59 6b 47 43 43 73 47 41 51 55 46  cmwwgYkGCCsGAQUF
7cf0: 42 77 45 42 0d 0a 23 20 42 48 30 77 65 7a 41 33  BwEB..# BH0wezA3
7d00: 42 67 67 72 42 67 45 46 42 51 63 77 41 59 59 72  BggrBgEFBQcwAYYr
7d10: 61 48 52 30 63 44 6f 76 4c 32 39 6a 63 33 41 75  aHR0cDovL29jc3Au
7d20: 63 33 52 68 63 6e 52 7a 63 32 77 75 59 32 39 74  c3RhcnRzc2wuY29t
7d30: 4c 33 4e 31 59 69 39 6a 0d 0a 23 20 62 47 46 7a  L3N1Yi9j..# bGFz
7d40: 63 7a 49 76 59 32 39 6b 5a 53 39 6a 59 54 42 41  czIvY29kZS9jYTBA
7d50: 42 67 67 72 42 67 45 46 42 51 63 77 41 6f 59 30  BggrBgEFBQcwAoY0
7d60: 61 48 52 30 63 44 6f 76 4c 33 64 33 64 79 35 7a  aHR0cDovL3d3dy5z
7d70: 64 47 46 79 64 48 4e 7a 62 43 35 6a 0d 0a 23 20  dGFydHNzbC5j..# 
7d80: 62 32 30 76 59 32 56 79 64 48 4d 76 63 33 56 69  b20vY2VydHMvc3Vi
7d90: 4c 6d 4e 73 59 58 4e 7a 4d 69 35 6a 62 32 52 6c  LmNsYXNzMi5jb2Rl
7da0: 4c 6d 4e 68 4c 6d 4e 79 64 44 41 6a 42 67 4e 56  LmNhLmNydDAjBgNV
7db0: 48 52 49 45 48 44 41 61 68 68 68 6f 64 48 52 77  HRIEHDAahhhodHRw
7dc0: 0d 0a 23 20 4f 69 38 76 64 33 64 33 4c 6e 4e 30  ..# Oi8vd3d3LnN0
7dd0: 59 58 4a 30 63 33 4e 73 4c 6d 4e 76 62 53 38 77  YXJ0c3NsLmNvbS8w
7de0: 44 51 59 4a 4b 6f 5a 49 68 76 63 4e 41 51 45 46  DQYJKoZIhvcNAQEF
7df0: 42 51 41 44 67 67 45 42 41 43 59 2b 4a 38 38 5a  BQADggEBACY+J88Z
7e00: 59 72 35 41 0d 0a 23 20 36 6c 59 7a 2f 4c 34 4f  Yr5A..# 6lYz/L4O
7e10: 47 49 4c 53 37 62 36 56 51 51 59 6e 32 77 39 57  GILS7b6VQQYn2w9W
7e20: 6c 30 4f 45 51 45 77 6c 54 71 33 62 4d 59 69 6e  l0OEQEwlTq3bMYin
7e30: 4e 6f 45 78 71 43 78 58 68 46 43 48 4f 69 35 38  NoExqCxXhFCHOi58
7e40: 58 36 72 38 77 64 48 62 0d 0a 23 20 45 36 6d 55  X6r8wdHb..# E6mU
7e50: 38 68 34 30 76 4e 59 42 49 39 4b 70 76 4c 6a 41  8h40vNYBI9KpvLjA
7e60: 6e 36 44 79 31 6e 51 45 77 66 76 41 66 59 41 4c  n6Dy1nQEwfvAfYAL
7e70: 38 57 4d 77 79 5a 79 6b 50 59 49 53 2f 79 32 44  8WMwyZykPYIS/y2D
7e80: 71 33 53 42 32 58 76 7a 46 79 32 37 0d 0a 23 20  q3SB2XvzFy27..# 
7e90: 7a 70 49 64 6c 61 38 71 49 53 68 75 4e 6c 58 32  zpIdla8qIShuNlX2
7ea0: 32 46 51 4c 36 2f 46 4b 42 72 69 79 39 36 6a 63  2FQL6/FKBriy96jc
7eb0: 64 47 45 59 46 39 72 62 73 75 57 6b 75 30 34 4e  dGEYF9rbsuWku04N
7ec0: 71 53 4c 6a 4e 4d 34 37 77 43 41 7a 4c 73 2f 6e  qSLjNM47wCAzLs/n
7ed0: 0d 0a 23 20 46 58 70 64 63 42 4c 31 52 36 51 45  ..# FXpdcBL1R6QE
7ee0: 4b 34 4d 52 68 63 45 4c 39 48 6f 34 68 47 62 56  K4MRhcEL9Ho4hGbV
7ef0: 76 6d 4a 45 53 36 34 49 59 2b 50 33 78 6c 56 32  vmJES64IY+P3xlV2
7f00: 76 6c 45 4a 6b 6b 33 65 74 42 2f 46 70 4e 44 4f  vlEJkk3etB/FpNDO
7f10: 51 66 38 6a 0d 0a 23 20 52 54 58 72 72 42 55 59  Qf8j..# RTXrrBUY
7f20: 46 76 4f 43 76 32 30 75 48 73 52 70 63 33 6b 46  FvOCv20uHsRpc3kF
7f30: 64 75 58 74 33 48 52 56 32 51 6e 41 6c 52 70 47  duXt3HRV2QnAlRpG
7f40: 32 36 59 70 5a 4e 34 78 76 67 71 53 47 58 55 65  26YpZN4xvgqSGXUe
7f50: 71 52 63 65 65 66 37 44 0d 0a 23 20 64 6d 34 69  qRceef7D..# dm4i
7f60: 54 64 48 4b 35 74 49 78 67 67 49 30 4d 49 49 43  TdHK5tIxggI0MIIC
7f70: 4d 41 49 42 41 54 43 42 6b 6a 43 42 6a 44 45 4c  MAIBATCBkjCBjDEL
7f80: 4d 41 6b 47 41 31 55 45 42 68 4d 43 53 55 77 78  MAkGA1UEBhMCSUwx
7f90: 46 6a 41 55 42 67 4e 56 42 41 6f 54 0d 0a 23 20  FjAUBgNVBAoT..# 
7fa0: 44 56 4e 30 59 58 4a 30 51 32 39 74 49 45 78 30  DVN0YXJ0Q29tIEx0
7fb0: 5a 43 34 78 4b 7a 41 70 42 67 4e 56 42 41 73 54  ZC4xKzApBgNVBAsT
7fc0: 49 6c 4e 6c 59 33 56 79 5a 53 42 45 61 57 64 70  IlNlY3VyZSBEaWdp
7fd0: 64 47 46 73 49 45 4e 6c 63 6e 52 70 5a 6d 6c 6a  dGFsIENlcnRpZmlj
7fe0: 0d 0a 23 20 59 58 52 6c 49 46 4e 70 5a 32 35 70  ..# YXRlIFNpZ25p
7ff0: 62 6d 63 78 4f 44 41 32 42 67 4e 56 42 41 4d 54  bmcxODA2BgNVBAMT
8000: 4c 31 4e 30 59 58 4a 30 51 32 39 74 49 45 4e 73  L1N0YXJ0Q29tIENs
8010: 59 58 4e 7a 49 44 49 67 55 48 4a 70 62 57 46 79  YXNzIDIgUHJpbWFy
8020: 65 53 42 4a 0d 0a 23 20 62 6e 52 6c 63 6d 31 6c  eSBJ..# bnRlcm1l
8030: 5a 47 6c 68 64 47 55 67 54 32 4a 71 5a 57 4e 30  ZGlhdGUgT2JqZWN0
8040: 49 45 4e 42 41 67 46 52 4d 41 6b 47 42 53 73 4f  IENBAgFRMAkGBSsO
8050: 41 77 49 61 42 51 43 67 65 44 41 59 42 67 6f 72  AwIaBQCgeDAYBgor
8060: 42 67 45 45 41 59 49 33 0d 0a 23 20 41 67 45 4d  BgEEAYI3..# AgEM
8070: 4d 51 6f 77 43 4b 41 43 67 41 43 68 41 6f 41 41  MQowCKACgAChAoAA
8080: 4d 42 6b 47 43 53 71 47 53 49 62 33 44 51 45 4a  MBkGCSqGSIb3DQEJ
8090: 41 7a 45 4d 42 67 6f 72 42 67 45 45 41 59 49 33  AzEMBgorBgEEAYI3
80a0: 41 67 45 45 4d 42 77 47 43 69 73 47 0d 0a 23 20  AgEEMBwGCisG..# 
80b0: 41 51 51 42 67 6a 63 43 41 51 73 78 44 6a 41 4d  AQQBgjcCAQsxDjAM
80c0: 42 67 6f 72 42 67 45 45 41 59 49 33 41 67 45 57  BgorBgEEAYI3AgEW
80d0: 4d 43 4d 47 43 53 71 47 53 49 62 33 44 51 45 4a  MCMGCSqGSIb3DQEJ
80e0: 42 44 45 57 42 42 54 6a 79 58 66 6c 59 5a 4b 6a  BDEWBBTjyXflYZKj
80f0: 0d 0a 23 20 62 79 34 6c 6d 78 30 4a 64 34 48 58  ..# by4lmx0Jd4HX
8100: 30 53 4a 6d 35 7a 41 4e 42 67 6b 71 68 6b 69 47  0SJm5zANBgkqhkiG
8110: 39 77 30 42 41 51 45 46 41 41 53 43 41 51 41 52  9w0BAQEFAASCAQAR
8120: 45 44 69 79 68 6a 4b 6c 34 4a 53 43 58 36 31 72  EDiyhjKl4JSCX61r
8130: 41 74 6f 55 0d 0a 23 20 6f 4a 37 4c 79 31 4f 31  AtoU..# oJ7Ly1O1
8140: 64 4b 46 64 52 35 2b 62 74 30 67 68 65 74 39 75  dKFdR5+bt0ghet9u
8150: 4b 39 71 7a 71 41 6c 39 2b 34 66 78 62 34 52 43  K9qzqAl9+4fxb4RC
8160: 2f 58 71 6e 63 58 59 42 75 6d 74 61 53 77 48 63  /XqncXYBumtaSwHc
8170: 6a 68 79 6e 35 47 36 38 0d 0a 23 20 48 79 63 4f  jhyn5G68..# HycO
8180: 68 64 59 33 67 2b 34 65 75 7a 36 78 6f 2f 62 50  hdY3g+4euz6xo/bP
8190: 66 42 46 56 53 7a 33 63 41 30 41 30 6f 50 75 35  fBFVSz3cA0A0oPu5
81a0: 53 32 63 61 74 2b 6a 66 74 6e 57 4d 62 6b 33 59  S2cat+jftnWMbk3Y
81b0: 2b 6a 5a 73 63 37 67 39 53 62 49 5a 0d 0a 23 20  +jZsc7g9SbIZ..# 
81c0: 30 4d 47 41 66 38 30 38 6c 71 6b 5a 75 54 64 77  0MGAf808lqkZuTdw
81d0: 47 2f 64 48 38 4a 64 53 43 6b 33 59 77 31 31 70  G/dH8JdSCk3Yw11p
81e0: 6a 73 73 38 7a 7a 32 41 58 48 67 35 46 46 48 32  jss8zz2AXHg5FFH2
81f0: 34 5a 4b 52 33 7a 4c 70 6e 53 53 48 58 30 4c 6e  4ZKR3zLpnSSHX0Ln
8200: 0d 0a 23 20 58 4d 56 52 72 6b 74 4b 57 48 46 2f  ..# XMVRrktKWHF/
8210: 42 57 6c 34 50 44 4f 4b 30 36 75 34 5a 5a 67 77  BWl4PDOK06u4ZZgw
8220: 33 76 31 58 30 76 69 66 44 4d 56 79 38 39 58 52  3v1X0vifDMVy89XR
8230: 77 4e 31 4f 63 36 6a 32 32 41 75 58 2f 6f 62 39  wN1Oc6j22AuX/ob9
8240: 5a 6b 69 68 0d 0a 23 20 44 7a 61 70 57 65 65 64  Zkih..# DzapWeed
8250: 5a 49 4f 73 63 52 30 74 79 46 52 36 44 4f 72 44  ZIOscR0tyFR6DOrD
8260: 36 67 6a 38 79 74 73 70 2f 49 79 31 54 38 74 61  6gj8ytsp/Iy1T8ta
8270: 50 39 39 47 5a 50 48 69 45 6e 6a 73 63 34 37 39  P99GZPHiEnjsc479
8280: 4c 58 65 79 61 72 56 74 0d 0a 23 20 53 49 47 20  LXeyarVt..# SIG 
8290: 23 20 45 6e 64 20 73 69 67 6e 61 74 75 72 65 20  # End signature 
82a0: 62 6c 6f 63 6b 0d 0a                             block..