PoshCode Archive  Hex Artifact Content

Artifact 8c8add228a16ddc1d487e71c3be0c24c2c0aba1e8aa7bfc49f631ef8bd5cdff2:

  • File Xml-Module.ps1 — part of check-in [60d18e914d] at 2018-06-10 13:27:37 on branch trunk — A complete set of XML functionality (especially if you don’t have PSCX), including reading and writing xml files (import-xml, export-xml), selecting (via xpath), updating, transforming and creating new xml documents. (user: Joel Bennett size: 53860)

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 41 20 63 6f 6d 70  cription: A comp
0050: 6c 65 74 65 20 73 65 74 20 6f 66 20 58 4d 4c 20  lete set of XML 
0060: 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 28 65  functionality (e
0070: 73 70 65 63 69 61 6c 6c 79 20 69 66 20 79 6f 75  specially if you
0080: 20 64 6f 6e e2 80 99 74 20 68 61 76 65 20 50 53   don...t have PS
0090: 43 58 29 2c 20 69 6e 63 6c 75 64 69 6e 67 20 72  CX), including r
00a0: 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69  eading and writi
00b0: 6e 67 20 78 6d 6c 20 66 69 6c 65 73 20 28 69 6d  ng xml files (im
00c0: 70 6f 72 74 2d 78 6d 6c 2c 20 65 78 70 6f 72 74  port-xml, export
00d0: 2d 78 6d 6c 29 2c 20 73 65 6c 65 63 74 69 6e 67  -xml), selecting
00e0: 20 28 76 69 61 20 78 70 61 74 68 29 2c 20 75 70   (via xpath), up
00f0: 64 61 74 69 6e 67 2c 20 74 72 61 6e 73 66 6f 72  dating, transfor
0100: 6d 69 6e 67 20 61 6e 64 20 63 72 65 61 74 69 6e  ming and creatin
0110: 67 20 6e 65 77 20 78 6d 6c 20 64 6f 63 75 6d 65  g new xml docume
0120: 6e 74 73 2e 0d 0a 23 20 76 65 72 73 69 6f 6e 3a  nts...# version:
0130: 20 36 2e 35 0d 0a 23 20 74 79 70 65 3a 20 66 75   6.5..# type: fu
0140: 6e 63 74 69 6f 6e 0d 0a 23 20 61 75 74 68 6f 72  nction..# author
0150: 3a 20 4a 6f 65 6c 20 42 65 6e 6e 65 74 74 0d 0a  : Joel Bennett..
0160: 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d 0a  # license: CC0..
0170: 23 20 66 75 6e 63 74 69 6f 6e 3a 20 41 64 64 2d  # function: Add-
0180: 41 63 63 65 6c 65 72 61 74 6f 72 0d 0a 23 20 78  Accelerator..# x
0190: 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33 35  -poshcode-id: 35
01a0: 35 36 0d 0a 23 20 78 2d 64 65 72 69 76 65 64 2d  56..# x-derived-
01b0: 66 72 6f 6d 2d 69 64 3a 20 33 39 32 36 0d 0a 23  from-id: 3926..#
01c0: 20 78 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31   x-archived: 201
01d0: 36 2d 30 34 2d 31 39 54 31 31 3a 31 31 3a 31 35  6-04-19T11:11:15
01e0: 0d 0a 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a  ..# x-published:
01f0: 20 32 30 31 33 2d 30 38 2d 30 32 54 30 38 3a 31   2013-08-02T08:1
0200: 30 3a 30 30 0d 0a 23 0d 0a 23 20 49 6e 20 70 61  0:00..#..# In pa
0210: 72 74 69 63 75 6c 61 72 3a 20 0d 0a 23 20 41 20  rticular: ..# A 
0220: 44 53 4c 20 66 6f 72 20 63 72 65 61 74 69 6e 67  DSL for creating
0230: 20 58 4d 4c 20 64 6f 63 75 6d 65 6e 74 73 2e 0d   XML documents..
0240: 0a 23 20 43 6f 6e 76 65 72 74 2d 58 6d 6c 20 77  .# Convert-Xml w
0250: 68 69 63 68 20 73 75 70 70 6f 72 74 73 20 70 61  hich supports pa
0260: 72 61 6d 65 74 65 72 73 20 73 6f 20 79 6f 75 20  rameters so you 
0270: 63 61 6e 20 75 73 65 20 58 53 4c 54 20 77 68 69  can use XSLT whi
0280: 63 68 20 72 65 71 75 69 72 65 20 70 61 72 61 6d  ch require param
0290: 65 74 65 72 73 0d 0a 23 20 53 65 6c 65 63 74 2d  eters..# Select-
02a0: 58 4d 4c 20 77 68 69 63 68 20 6c 65 76 65 72 61  XML which levera
02b0: 67 65 73 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61  ges Remove-XmlNa
02c0: 6d 65 73 70 61 63 65 20 74 6f 20 73 69 6d 70 6c  mespace to simpl
02d0: 69 66 79 20 73 69 6d 70 6c 65 20 78 6d 6c 20 71  ify simple xml q
02e0: 75 65 72 69 65 73 20 62 79 20 61 6c 6c 6f 77 69  ueries by allowi
02f0: 6e 67 20 79 6f 75 20 74 6f 20 6c 65 61 76 65 20  ng you to leave 
0300: 6f 75 74 20 74 68 65 20 6e 61 6d 65 73 70 61 63  out the namespac
0310: 65 73 2e 20 49 74 20 69 73 20 69 6d 70 6f 72 74  es. It is import
0320: 61 6e 74 20 74 6f 20 6e 6f 74 65 20 74 68 61 74  ant to note that
0330: 20 74 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74   this means that
0340: 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 72 65   the returned re
0350: 73 75 6c 74 73 20 77 69 6c 6c 20 6e 6f 74 20 68  sults will not h
0360: 61 76 65 20 6e 61 6d 65 73 70 61 63 65 73 20 69  ave namespaces i
0370: 6e 20 74 68 65 6d 2c 20 65 76 65 6e 20 69 66 20  n them, even if 
0380: 74 68 65 20 69 6e 70 75 74 20 58 4d 4c 20 64 69  the input XML di
0390: 64 2e 0d 0a 23 20 41 4c 53 4f 20 4e 4f 54 45 3a  d...# ALSO NOTE:
03a0: 20 6f 6e 6c 79 20 72 61 77 20 58 6d 6c 4e 6f 64   only raw XmlNod
03b0: 65 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20  es are returned 
03c0: 66 72 6f 6d 20 53 65 6c 65 63 74 2d 58 6d 6c 2c  from Select-Xml,
03d0: 20 73 6f 20 74 68 65 20 6f 75 74 70 75 74 20 69   so the output i
03e0: 73 6e e2 80 99 74 20 63 6f 6d 70 61 74 69 62 6c  sn...t compatibl
03f0: 65 20 77 69 74 68 20 74 68 65 20 62 75 69 6c 74  e with the built
0400: 20 69 6e 20 53 65 6c 65 63 74 2d 58 6d 6c 20 e2   in Select-Xml .
0410: 80 94 20 69 6e 73 74 65 61 64 2c 20 69 74 e2 80  .. instead, it..
0420: 99 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  .s equivalent to
0430: 20 75 73 69 6e 67 20 69 74 20 74 68 65 20 77 61   using it the wa
0440: 79 20 49 20 75 73 75 61 6c 6c 79 20 64 6f 3a 20  y I usually do: 
0450: 53 65 6c 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c  Select-Xml ... |
0460: 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20 2d   Select-Object -
0470: 45 78 70 61 6e 64 20 4e 6f 64 65 0d 0a 23 20 55  Expand Node..# U
0480: 70 64 61 74 65 2d 58 6d 6c 20 77 68 69 63 68 20  pdate-Xml which 
0490: 61 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20 61 70  allows you to ap
04a0: 70 65 6e 64 2c 20 69 6e 73 65 72 74 2c 20 72 65  pend, insert, re
04b0: 6d 6f 76 65 2c 20 61 6e 64 20 72 65 70 6c 61 63  move, and replac
04c0: 65 20 76 61 6c 75 65 73 20 69 6e 20 58 4d 4c 20  e values in XML 
04d0: 44 6f 63 75 6d 65 6e 74 73 0d 0a 23 20 52 65 6d  Documents..# Rem
04e0: 6f 76 65 2d 58 6d 6c 45 6c 65 6d 65 6e 74 20 77  ove-XmlElement w
04f0: 68 69 63 68 20 63 61 6e 20 72 65 6d 6f 76 65 20  hich can remove 
0500: 6e 6f 64 65 73 20 6f 72 20 61 74 74 72 69 62 75  nodes or attribu
0510: 74 65 73 20 62 79 20 6e 61 6d 65 73 70 61 63 65  tes by namespace
0520: 20 74 6f 20 63 6c 65 61 6e 2d 75 70 20 64 65 73   to clean-up des
0530: 69 67 6e 65 72 2d 67 65 6e 65 72 61 74 65 64 20  igner-generated 
0540: 58 4d 4c 0d 0a 23 20 49 6e 20 74 68 69 73 20 56  XML..# In this V
0550: 65 72 73 69 6f 6e 3a 20 49 20 61 64 64 65 64 20  ersion: I added 
0560: 52 65 6d 6f 76 65 2d 58 6d 6c 45 6c 65 6d 65 6e  Remove-XmlElemen
0570: 74 2c 20 61 64 64 65 64 20 61 20 50 61 72 61 6d  t, added a Param
0580: 65 74 65 72 73 20 70 61 72 61 6d 65 74 65 72 20  eters parameter 
0590: 74 6f 20 4e 65 77 2d 58 6d 6c 44 6f 63 75 6d 65  to New-XmlDocume
05a0: 6e 74 2c 20 61 6e 64 20 66 69 78 65 64 20 61 20  nt, and fixed a 
05b0: 62 75 67 20 69 6e 20 4e 65 77 2d 58 45 6c 65 6d  bug in New-XElem
05c0: 65 6e 74 20 77 68 69 63 68 20 70 72 65 76 65 6e  ent which preven
05d0: 74 65 64 20 75 73 69 6e 67 20 61 74 74 72 69 62  ted using attrib
05e0: 75 74 65 20 76 61 6c 75 65 73 20 77 69 74 68 20  ute values with 
05f0: 64 61 73 68 65 73 20 69 6e 20 74 68 65 6d 2e 0d  dashes in them..
0600: 0a 23 0d 0a 23 72 65 71 75 69 72 65 73 20 2d 76  .#..#requires -v
0610: 65 72 73 69 6f 6e 20 32 2e 30 0d 0a 0d 0a 23 20  ersion 2.0....# 
0620: 49 6d 70 72 6f 76 65 73 20 6f 76 65 72 20 74 68  Improves over th
0630: 65 20 62 75 69 6c 74 2d 69 6e 20 53 65 6c 65 63  e built-in Selec
0640: 74 2d 58 4d 4c 20 62 79 20 6c 65 76 65 72 61 67  t-XML by leverag
0650: 69 6e 67 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61  ing Remove-XmlNa
0660: 6d 65 73 70 61 63 65 20 68 74 74 70 60 3a 2f 2f  mespace http`://
0670: 70 6f 73 68 63 6f 64 65 2e 6f 72 67 2f 31 34 39  poshcode.org/149
0680: 32 20 0d 0a 23 20 74 6f 20 70 72 6f 76 69 64 65  2 ..# to provide
0690: 20 61 20 2d 52 65 6d 6f 76 65 4e 61 6d 65 73 70   a -RemoveNamesp
06a0: 61 63 65 20 70 61 72 61 6d 65 74 65 72 20 2d 2d  ace parameter --
06b0: 20 69 66 20 69 74 27 73 20 73 75 70 70 6c 69 65   if it's supplie
06c0: 64 2c 20 61 6c 6c 20 6f 66 20 74 68 65 20 6e 61  d, all of the na
06d0: 6d 65 73 70 61 63 65 20 64 65 63 6c 61 72 61 74  mespace declarat
06e0: 69 6f 6e 73 20 0d 0a 23 20 61 6e 64 20 70 72 65  ions ..# and pre
06f0: 66 69 78 65 73 20 61 72 65 20 72 65 6d 6f 76 65  fixes are remove
0700: 64 20 66 72 6f 6d 20 61 6c 6c 20 58 4d 4c 20 6e  d from all XML n
0710: 6f 64 65 73 20 28 62 79 20 61 6e 20 58 53 4c 20  odes (by an XSL 
0720: 74 72 61 6e 73 66 6f 72 6d 29 20 62 65 66 6f 72  transform) befor
0730: 65 20 73 65 61 72 63 68 69 6e 67 2e 20 0d 0a 23  e searching. ..#
0740: 20 49 4d 50 4f 52 54 41 4e 54 3a 20 72 65 74 75   IMPORTANT: retu
0750: 72 6e 65 64 20 72 65 73 75 6c 74 73 20 2a 77 69  rned results *wi
0760: 6c 6c 20 6e 6f 74 2a 20 68 61 76 65 20 6e 61 6d  ll not* have nam
0770: 65 73 70 61 63 65 73 20 69 6e 20 74 68 65 6d 2c  espaces in them,
0780: 20 65 76 65 6e 20 69 66 20 74 68 65 20 69 6e 70   even if the inp
0790: 75 74 20 58 4d 4c 20 64 69 64 2e 20 0d 0a 0d 0a  ut XML did. ....
07a0: 23 20 41 6c 73 6f 2c 20 6f 6e 6c 79 20 72 61 77  # Also, only raw
07b0: 20 58 6d 6c 4e 6f 64 65 73 20 61 72 65 20 72 65   XmlNodes are re
07c0: 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 69 73  turned from this
07d0: 20 66 75 6e 63 74 69 6f 6e 2c 20 73 6f 20 74 68   function, so th
07e0: 65 20 6f 75 74 70 75 74 20 69 73 6e 27 74 20 63  e output isn't c
07f0: 6f 6d 70 6c 65 74 65 6c 79 20 63 6f 6d 70 61 74  ompletely compat
0800: 69 62 6c 65 20 0d 0a 23 20 77 69 74 68 20 74 68  ible ..# with th
0810: 65 20 62 75 69 6c 74 20 69 6e 20 53 65 6c 65 63  e built in Selec
0820: 74 2d 58 6d 6c 2e 20 49 74 27 73 20 65 71 75 69  t-Xml. It's equi
0830: 76 61 6c 65 6e 74 20 74 6f 20 75 73 69 6e 67 20  valent to using 
0840: 53 65 6c 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c  Select-Xml ... |
0850: 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20 2d   Select-Object -
0860: 45 78 70 61 6e 64 20 4e 6f 64 65 0d 0a 0d 0a 23  Expand Node....#
0870: 20 56 65 72 73 69 6f 6e 20 48 69 73 74 6f 72 79   Version History
0880: 3a 0d 0a 23 20 53 65 6c 65 63 74 2d 58 6d 6c 20  :..# Select-Xml 
0890: 32 2e 30 20 54 68 69 73 20 77 61 73 20 74 68 65  2.0 This was the
08a0: 20 66 69 72 73 74 20 73 63 72 69 70 74 20 76 65   first script ve
08b0: 72 73 69 6f 6e 20 49 20 77 72 6f 74 65 2e 0d 0a  rsion I wrote...
08c0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
08d0: 20 69 74 20 64 69 64 6e 27 74 20 66 75 6e 63 74   it didn't funct
08e0: 69 6f 6e 20 69 64 65 6e 74 69 63 61 6c 6c 79 20  ion identically 
08f0: 74 6f 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  to the built-in 
0900: 53 65 6c 65 63 74 2d 58 6d 6c 20 77 69 74 68 20  Select-Xml with 
0910: 72 65 67 61 72 64 73 20 74 6f 20 70 61 72 61 6d  regards to param
0920: 65 74 65 72 20 70 61 72 73 69 6e 67 0d 0a 23 20  eter parsing..# 
0930: 53 65 6c 65 63 74 2d 58 6d 6c 20 32 2e 31 20 4d  Select-Xml 2.1 M
0940: 61 74 63 68 65 64 20 74 68 65 20 62 75 69 6c 74  atched the built
0950: 2d 69 6e 20 53 65 6c 65 63 74 2d 58 6d 6c 20 70  -in Select-Xml p
0960: 61 72 61 6d 65 74 65 72 20 73 65 74 73 2c 20 69  arameter sets, i
0970: 74 27 73 20 6e 6f 77 20 61 20 64 72 6f 70 2d 69  t's now a drop-i
0980: 6e 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 0d 0a  n replacement ..
0990: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
09a0: 20 42 55 54 20 6f 6e 6c 79 20 69 66 20 79 6f 75   BUT only if you
09b0: 20 77 65 72 65 20 75 73 69 6e 67 20 74 68 65 20   were using the 
09c0: 6f 72 69 67 69 6e 61 6c 20 77 69 74 68 3a 20 53  original with: S
09d0: 65 6c 65 63 74 2d 58 6d 6c 20 2e 2e 2e 20 7c 20  elect-Xml ... | 
09e0: 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74 20 2d 45  Select-Object -E
09f0: 78 70 61 6e 64 20 4e 6f 64 65 0d 0a 23 20 53 65  xpand Node..# Se
0a00: 6c 65 63 74 2d 58 6d 6c 20 32 2e 32 20 46 69 78  lect-Xml 2.2 Fix
0a10: 65 73 20 61 20 62 75 67 20 69 6e 20 74 68 65 20  es a bug in the 
0a20: 2d 43 6f 6e 74 65 6e 74 20 70 61 72 61 6d 65 74  -Content paramet
0a30: 65 72 73 65 74 20 77 68 65 72 65 20 2d 52 65 6d  erset where -Rem
0a40: 6f 76 65 4e 61 6d 65 73 70 61 63 65 20 77 61 73  oveNamespace was
0a50: 20 2a 70 72 65 73 75 6d 65 64 2a 0d 0a 23 20 56   *presumed*..# V
0a60: 65 72 73 69 6f 6e 20 20 20 20 33 2e 30 20 41 64  ersion    3.0 Ad
0a70: 64 65 64 20 4e 65 77 2d 58 44 6f 63 75 6d 65 6e  ded New-XDocumen
0a80: 74 20 61 6e 64 20 61 73 73 6f 63 69 61 74 65 64  t and associated
0a90: 20 67 65 6e 65 72 61 74 69 6f 6e 20 66 75 6e 63   generation func
0aa0: 74 69 6f 6e 73 20 66 6f 72 20 6d 79 20 58 4d 4c  tions for my XML
0ab0: 20 44 53 4c 0d 0a 23 20 56 65 72 73 69 6f 6e 20   DSL..# Version 
0ac0: 20 20 20 33 2e 31 20 46 69 78 65 64 20 61 20 72     3.1 Fixed a r
0ad0: 65 61 6c 6c 79 20 75 67 6c 79 20 62 75 67 20 69  eally ugly bug i
0ae0: 6e 20 4e 65 77 2d 58 44 6f 63 75 6d 65 6e 74 20  n New-XDocument 
0af0: 69 6e 20 33 2e 30 20 77 68 69 63 68 20 49 20 73  in 3.0 which I s
0b00: 68 6f 75 6c 64 20 6e 6f 74 20 68 61 76 65 20 72  hould not have r
0b10: 65 6c 65 61 73 65 64 0d 0a 23 20 56 65 72 73 69  eleased..# Versi
0b20: 6f 6e 20 20 20 20 34 2e 30 20 4e 65 76 65 72 20  on    4.0 Never 
0b30: 63 6f 6e 74 65 6e 74 20 74 6f 20 6c 65 61 76 65  content to leave
0b40: 20 77 65 6c 6c 20 65 6e 6f 75 67 68 20 61 6c 6f   well enough alo
0b50: 6e 65 2c 20 49 27 76 65 20 63 6f 6d 70 6c 65 74  ne, I've complet
0b60: 65 6c 79 20 72 65 77 6f 72 6b 65 64 20 4e 65 77  ely reworked New
0b70: 2d 58 44 6f 63 75 6d 65 6e 74 0d 0a 23 20 56 65  -XDocument..# Ve
0b80: 72 73 69 6f 6e 20 20 20 20 34 2e 31 20 54 77 65  rsion    4.1 Twe
0b90: 61 6b 65 64 20 6e 61 6d 65 73 70 61 63 65 73 20  aked namespaces 
0ba0: 61 67 61 69 6e 20 73 6f 20 74 68 65 79 20 64 6f  again so they do
0bb0: 6e 27 74 20 63 61 73 63 61 64 65 20 64 6f 77 6e  n't cascade down
0bc0: 20 77 68 65 6e 20 74 68 65 79 20 73 68 6f 75 6c   when they shoul
0bd0: 64 6e 27 74 2e 20 47 6f 74 20 72 69 64 20 6f 66  dn't. Got rid of
0be0: 20 74 68 65 20 75 6e 6e 65 63 65 73 73 61 72 79   the unnecessary
0bf0: 20 73 74 61 63 6b 2e 0d 0a 23 20 56 65 72 73 69   stack...# Versi
0c00: 6f 6e 20 20 20 20 34 2e 32 20 54 69 67 68 74 65  on    4.2 Tighte
0c10: 6e 65 64 20 78 6d 6c 3a 20 6f 6e 6c 79 20 63 6d  ned xml: only cm
0c20: 64 6c 65 74 2c 20 66 75 6e 63 74 69 6f 6e 2c 20  dlet, function, 
0c30: 61 6e 64 20 65 78 74 65 72 6e 61 6c 20 73 63 72  and external scr
0c40: 69 70 74 73 2c 20 77 69 74 68 20 22 2d 22 20 69  ipts, with "-" i
0c50: 6e 20 74 68 65 69 72 20 6e 61 6d 65 73 20 61 72  n their names ar
0c60: 65 20 65 78 65 6d 70 74 65 64 20 66 72 6f 6d 20  e exempted from 
0c70: 62 65 69 6e 67 20 63 6f 6e 76 65 72 74 65 64 20  being converted 
0c80: 69 6e 74 6f 20 78 6d 6c 20 74 61 67 73 2e 0d 0a  into xml tags...
0c90: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  #               
0ca0: 20 46 69 78 65 64 20 73 6f 6d 65 20 61 6c 69 61   Fixed some alia
0cb0: 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73  s error messages
0cc0: 20 63 61 75 73 65 64 20 77 68 65 6e 20 50 53 43   caused when PSC
0cd0: 58 20 69 73 20 61 6c 72 65 61 64 79 20 6c 6f 61  X is already loa
0ce0: 64 65 64 20 28 77 65 20 6f 76 65 72 77 72 69 74  ded (we overwrit
0cf0: 65 20 74 68 65 69 72 20 61 6c 69 61 73 65 73 20  e their aliases 
0d00: 66 6f 72 20 63 76 78 6d 6c 20 61 6e 64 20 66 78  for cvxml and fx
0d10: 6d 6c 29 0d 0a 23 20 56 65 72 73 69 6f 6e 20 20  ml)..# Version  
0d20: 20 20 34 2e 33 20 41 64 64 65 64 20 61 20 50 61    4.3 Added a Pa
0d30: 74 68 20 70 61 72 61 6d 65 74 65 72 20 73 65 74  th parameter set
0d40: 20 74 6f 20 46 6f 72 6d 61 74 2d 58 6d 6c 20 73   to Format-Xml s
0d50: 6f 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66  o you can specif
0d60: 79 20 78 6d 6c 20 66 69 6c 65 73 20 66 6f 72 20  y xml files for 
0d70: 70 72 65 74 79 20 70 72 69 6e 74 69 6e 67 0d 0a  prety printing..
0d80: 23 20 56 65 72 73 69 6f 6e 20 20 20 20 34 2e 35  # Version    4.5
0d90: 20 46 69 78 65 64 20 70 6f 73 73 69 62 6c 65 20   Fixed possible 
0da0: 5b 41 72 72 61 79 5d 3a 3a 52 65 76 65 72 73 65  [Array]::Reverse
0db0: 20 63 61 6c 6c 20 6f 6e 20 61 20 6e 6f 6e 2d 61   call on a non-a
0dc0: 72 72 61 79 20 69 6e 20 4e 65 77 2d 58 45 6c 65  rray in New-XEle
0dd0: 6d 65 6e 74 20 28 75 73 65 64 20 62 79 20 4e 65  ment (used by Ne
0de0: 77 2d 58 44 6f 63 75 6d 65 6e 74 29 0d 0a 23 20  w-XDocument)..# 
0df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57                 W
0e00: 6f 72 6b 20 61 72 6f 75 6e 64 20 70 6f 73 73 69  ork around possi
0e10: 62 6c 65 20 76 61 72 69 61 62 6c 65 20 73 6c 69  ble variable sli
0e20: 70 70 69 6e 67 20 6f 6e 20 6e 75 6c 6c 20 76 61  pping on null va
0e30: 6c 75 65 73 20 62 79 3a 0d 0a 23 20 20 20 20 20  lues by:..#     
0e40: 20 20 20 20 20 20 20 20 20 20 20 31 29 20 61 6c             1) al
0e50: 6c 6f 77 69 6e 67 20 2d 70 61 72 61 6d 3a 24 76  lowing -param:$v
0e60: 61 6c 75 65 20 73 79 6e 74 61 78 20 28 77 68 69  alue syntax (whi
0e70: 63 68 20 64 6f 65 73 6e 27 74 20 66 61 69 6c 20  ch doesn't fail 
0e80: 77 68 65 6e 20 24 76 61 6c 75 65 20 69 73 20 6e  when $value is n
0e90: 75 6c 6c 29 0d 0a 23 20 20 20 20 20 20 20 20 20  ull)..#         
0ea0: 20 20 20 20 20 20 20 32 29 20 74 65 73 74 69 6e         2) testin
0eb0: 67 20 66 6f 72 20 2d 6e 61 6d 65 20 73 79 6e 74  g for -name synt
0ec0: 61 78 20 6f 6e 20 74 68 65 20 76 61 6c 75 65 20  ax on the value 
0ed0: 61 6e 64 20 75 73 69 6e 67 20 69 74 20 61 73 20  and using it as 
0ee0: 61 6e 20 61 74 74 72 69 62 75 74 65 20 69 6e 73  an attribute ins
0ef0: 74 65 61 64 0d 0a 23 20 56 65 72 73 69 6f 6e 20  tead..# Version 
0f00: 20 20 20 34 2e 36 20 41 64 64 65 64 20 2d 41 72     4.6 Added -Ar
0f10: 67 75 6d 65 6e 74 73 20 74 6f 20 43 6f 6e 76 65  guments to Conve
0f20: 72 74 2d 58 6d 6c 20 73 6f 20 74 68 61 74 20 79  rt-Xml so that y
0f30: 6f 75 20 63 61 6e 20 70 61 73 73 20 61 72 67 75  ou can pass argu
0f40: 6d 65 6e 74 73 20 74 6f 20 58 53 4c 54 20 74 72  ments to XSLT tr
0f50: 61 6e 73 66 6f 72 6d 73 21 0d 0a 23 20 20 20 20  ansforms!..#    
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f 74 65              Note
0f70: 3a 20 77 68 65 6e 20 75 73 69 6e 67 20 73 74 72  : when using str
0f80: 69 6e 67 73 20 66 6f 72 20 78 73 6c 74 2c 20 6d  ings for xslt, m
0f90: 61 6b 65 20 73 75 72 65 20 79 6f 75 20 73 69 6e  ake sure you sin
0fa0: 67 6c 65 20 71 75 6f 74 65 20 74 68 65 6d 20 6f  gle quote them o
0fb0: 72 20 65 73 63 61 70 65 20 74 68 65 20 24 20 73  r escape the $ s
0fc0: 69 67 6e 73 2e 0d 0a 23 20 56 65 72 73 69 6f 6e  igns...# Version
0fd0: 20 20 20 20 34 2e 37 20 46 69 78 65 64 20 61 20      4.7 Fixed a 
0fe0: 74 79 70 6f 20 69 6e 20 74 68 65 20 6e 61 6d 65  typo in the name
0ff0: 73 70 61 63 65 20 70 61 72 61 6d 65 74 65 72 20  space parameter 
1000: 6f 66 20 53 65 6c 65 63 74 2d 58 6d 6c 0d 0a 23  of Select-Xml..#
1010: 20 56 65 72 73 69 6f 6e 20 20 20 20 34 2e 38 20   Version    4.8 
1020: 46 69 78 65 64 20 75 70 20 73 6f 6d 65 20 75 73  Fixed up some us
1030: 65 73 20 6f 66 20 53 65 6c 65 63 74 2d 58 6d 6c  es of Select-Xml
1040: 20 2d 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63   -RemoveNamespac
1050: 65 0d 0a 23 20 56 65 72 73 69 6f 6e 20 20 20 20  e..# Version    
1060: 35 2e 30 20 41 64 64 65 64 20 55 70 64 61 74 65  5.0 Added Update
1070: 2d 58 6d 6c 20 74 6f 20 61 6c 6c 6f 77 20 73 65  -Xml to allow se
1080: 74 74 69 6e 67 20 78 6d 6c 20 61 74 74 72 69 62  tting xml attrib
1090: 75 74 65 73 20 6f 72 20 6e 6f 64 65 20 63 6f 6e  utes or node con
10a0: 74 65 6e 74 0d 0a 23 20 56 65 72 73 69 6f 6e 20  tent..# Version 
10b0: 20 20 20 36 2e 30 20 4d 61 6a 6f 72 20 63 6c 65     6.0 Major cle
10c0: 61 6e 75 70 2c 20 62 72 65 61 6b 69 6e 67 20 63  anup, breaking c
10d0: 68 61 6e 67 65 73 2e 0d 0a 23 20 20 20 20 20 20  hanges...#      
10e0: 20 2d 20 41 64 64 65 64 20 47 65 74 2d 58 6d 6c   - Added Get-Xml
10f0: 43 6f 6e 74 65 6e 74 20 61 6e 64 20 53 65 74 2d  Content and Set-
1100: 58 6d 6c 43 6f 6e 74 65 6e 74 20 66 6f 72 20 6c  XmlContent for l
1110: 6f 61 64 69 6e 67 2f 73 61 76 69 6e 67 20 58 4d  oading/saving XM
1120: 4c 20 66 72 6f 6d 20 66 69 6c 65 73 20 6f 72 20  L from files or 
1130: 73 74 72 69 6e 67 73 0d 0a 23 20 20 20 20 20 20  strings..#      
1140: 20 2d 20 52 65 6d 6f 76 65 64 20 50 61 74 68 20   - Removed Path 
1150: 61 6e 64 20 43 6f 6e 74 65 6e 74 20 70 61 72 61  and Content para
1160: 6d 65 74 65 72 73 20 66 72 6f 6d 20 74 68 65 20  meters from the 
1170: 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 73 20  other functions 
1180: 28 69 74 20 67 72 65 61 74 6c 79 20 73 69 6d 70  (it greatly simp
1190: 6c 69 66 69 65 73 20 74 68 6f 73 74 20 66 75 6e  lifies thost fun
11a0: 63 74 69 6f 6e 73 2c 20 61 6e 64 20 6d 61 6b 65  ctions, and make
11b0: 73 20 74 68 65 20 77 68 6f 6c 65 20 74 68 69 6e  s the whole thin
11c0: 67 20 6d 6f 72 65 20 6d 61 69 6e 74 61 69 6e 61  g more maintaina
11d0: 62 6c 65 29 0d 0a 23 20 20 20 20 20 20 20 2d 20  ble)..#       - 
11e0: 55 70 64 61 74 65 64 20 55 70 64 61 74 65 2d 58  Updated Update-X
11f0: 6d 6c 20 74 6f 20 73 75 70 70 6f 72 74 20 61 64  ml to support ad
1200: 64 69 6e 67 20 6e 6f 64 65 73 20 22 62 65 66 6f  ding nodes "befo
1210: 72 65 22 20 61 6e 64 20 22 61 66 74 65 72 22 20  re" and "after" 
1220: 6f 74 68 65 72 20 6e 6f 64 65 73 2c 20 61 6e 64  other nodes, and
1230: 20 74 6f 20 73 75 70 70 6f 72 74 20 22 72 65 6d   to support "rem
1240: 6f 76 65 22 69 6e 67 20 6e 6f 64 65 73 0d 0a 23  ove"ing nodes..#
1250: 20 56 65 72 73 69 6f 6e 20 20 20 20 36 2e 31 20   Version    6.1 
1260: 55 70 64 61 74 65 20 66 6f 72 20 50 6f 77 65 72  Update for Power
1270: 53 68 65 6c 6c 20 33 2e 30 0d 0a 23 20 56 65 72  Shell 3.0..# Ver
1280: 73 69 6f 6e 20 20 20 20 36 2e 32 20 4d 69 6e 6f  sion    6.2 Mino
1290: 72 20 74 77 65 61 6b 20 69 6e 20 65 78 63 65 70  r tweak in excep
12a0: 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 20 66 6f  tion handling fo
12b0: 72 20 43 6c 69 58 6d 6c 0d 0a 23 20 56 65 72 73  r CliXml..# Vers
12c0: 69 6f 6e 20 20 20 20 36 2e 33 20 41 64 64 65 64  ion    6.3 Added
12d0: 20 52 65 6d 6f 76 65 2d 58 6d 6c 45 6c 65 6d 65   Remove-XmlEleme
12e0: 6e 74 20 74 6f 20 61 6c 6c 6f 77 20 72 65 6d 6f  nt to allow remo
12f0: 76 69 6e 67 20 6e 6f 64 65 73 20 6f 72 20 61 74  ving nodes or at
1300: 74 72 69 62 75 74 65 73 0d 0a 23 20 20 20 20 20  tributes..#     
1310: 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20             This 
1320: 69 73 20 73 6f 6d 65 74 68 69 6e 67 20 49 20 73  is something I s
1330: 70 65 63 69 66 69 63 61 6c 6c 79 20 6e 65 65 64  pecifically need
1340: 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 22 69 67  ed to remove "ig
1350: 6e 6f 72 61 62 6c 65 22 20 6e 61 6d 65 73 70 61  norable" namespa
1360: 63 65 73 20 0d 0a 23 20 20 20 20 20 20 20 20 20  ces ..#         
1370: 20 20 20 20 20 20 20 53 70 65 63 69 66 69 63 61         Specifica
1380: 6c 6c 79 2c 20 74 68 65 20 6f 6e 65 73 20 63 72  lly, the ones cr
1390: 65 61 74 65 64 20 62 79 20 74 68 65 20 56 69 73  eated by the Vis
13a0: 75 61 6c 20 53 74 75 64 69 6f 20 57 6f 72 6b 66  ual Studio Workf
13b0: 6c 6f 77 20 64 65 73 69 67 6e 65 72 20 28 61 6e  low designer (an
13c0: 64 20 70 65 72 68 61 70 73 20 6f 74 68 65 72 20  d perhaps other 
13d0: 76 69 73 75 61 6c 20 64 65 73 69 67 6e 65 72 73  visual designers
13e0: 20 6c 69 6b 65 20 42 6c 65 6e 64 29 0d 0a 23 20   like Blend)..# 
13f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57                 W
1400: 68 69 63 68 20 49 20 64 6f 6e 27 74 20 77 61 6e  hich I don't wan
1410: 74 20 74 6f 20 63 68 65 63 6b 20 69 6e 74 6f 20  t to check into 
1420: 73 6f 75 72 63 65 20 63 6f 6e 74 72 6f 6c 2c 20  source control, 
1430: 62 65 63 61 75 73 65 20 69 74 20 6d 61 6b 65 73  because it makes
1440: 20 64 69 66 66 69 6e 67 20 6e 65 61 72 6c 79 20   diffing nearly 
1450: 69 6d 70 6f 73 73 69 62 6c 65 0d 0a 23 20 56 65  impossible..# Ve
1460: 72 73 69 6f 6e 20 20 20 20 36 2e 34 20 46 69 78  rsion    6.4 Fix
1470: 65 64 20 61 20 62 75 67 20 6f 6e 20 4e 65 77 2d  ed a bug on New-
1480: 58 45 6c 65 6d 65 6e 74 20 66 6f 72 20 52 75 64  XElement for Rud
1490: 79 20 53 68 6f 63 6b 61 65 72 74 20 28 6e 69 63  y Shockaert (nic
14a0: 65 20 62 75 67 20 72 65 70 6f 72 74 2c 20 74 68  e bug report, th
14b0: 61 6e 6b 73 21 29 0d 0a 23 20 56 65 72 73 69 6f  anks!)..# Versio
14c0: 6e 20 20 20 20 36 2e 35 20 41 64 64 65 64 20 2d  n    6.5 Added -
14d0: 50 61 72 61 6d 65 74 65 72 73 20 40 7b 7d 20 70  Parameters @{} p
14e0: 61 72 61 6d 65 74 65 72 20 74 6f 20 4e 65 77 2d  arameter to New-
14f0: 58 44 6f 63 75 6d 65 6e 74 20 74 6f 20 61 6c 6c  XDocument to all
1500: 6f 77 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c  ow local variabl
1510: 65 73 20 74 6f 20 62 65 20 70 61 73 73 65 64 20  es to be passed 
1520: 69 6e 74 6f 20 74 68 65 20 6d 6f 64 75 6c 65 20  into the module 
1530: 73 63 6f 70 65 2e 20 2a 67 72 75 6d 62 6c 65 2a  scope. *grumble*
1540: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 41 64 64  ....function Add
1550: 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 7b 0d 0a  -Accelerator {..
1560: 3c 23 0d 0a 20 20 20 2e 53 79 6e 6f 70 73 69 73  <#..   .Synopsis
1570: 0d 0a 20 20 20 20 20 20 41 64 64 20 61 20 74 79  ..      Add a ty
1580: 70 65 20 61 63 63 65 6c 65 72 61 74 6f 72 20 74  pe accelerator t
1590: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65  o the current se
15a0: 73 73 69 6f 6e 0d 0a 20 20 20 2e 44 65 73 63 72  ssion..   .Descr
15b0: 69 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 54 68  iption..      Th
15c0: 65 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f  e Add-Accelerato
15d0: 72 20 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77  r function allow
15e0: 73 20 79 6f 75 20 74 6f 20 61 64 64 20 61 20 73  s you to add a s
15f0: 69 6d 70 6c 65 20 74 79 70 65 20 61 63 63 65 6c  imple type accel
1600: 65 72 61 74 6f 72 20 28 6c 69 6b 65 20 5b 72 65  erator (like [re
1610: 67 65 78 5d 29 20 66 6f 72 20 61 20 6c 6f 6e 67  gex]) for a long
1620: 65 72 20 74 79 70 65 20 28 6c 69 6b 65 20 5b 53  er type (like [S
1630: 79 73 74 65 6d 2e 54 65 78 74 2e 52 65 67 75 6c  ystem.Text.Regul
1640: 61 72 45 78 70 72 65 73 73 69 6f 6e 73 2e 52 65  arExpressions.Re
1650: 67 65 78 5d 29 2e 0d 0a 20 20 20 2e 45 78 61 6d  gex])...   .Exam
1660: 70 6c 65 0d 0a 20 20 20 20 20 20 41 64 64 2d 41  ple..      Add-A
1670: 63 63 65 6c 65 72 61 74 6f 72 20 6c 69 73 74 20  ccelerator list 
1680: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
1690: 6e 73 2e 47 65 6e 65 72 69 63 2e 4c 69 73 74 60  ns.Generic.List`
16a0: 60 31 0d 0a 20 20 20 20 20 20 24 6c 69 73 74 20  `1..      $list 
16b0: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 6c 69 73  = New-Object lis
16c0: 74 5b 73 74 72 69 6e 67 5d 0d 0a 20 20 20 20 20  t[string]..     
16d0: 20 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 73   ..      Creates
16e0: 20 61 6e 20 61 63 63 65 6c 65 72 61 74 6f 72 20   an accelerator 
16f0: 66 6f 72 20 74 68 65 20 67 65 6e 65 72 69 63 20  for the generic 
1700: 4c 69 73 74 5b 54 5d 20 63 6f 6c 6c 65 63 74 69  List[T] collecti
1710: 6f 6e 20 74 79 70 65 2c 20 61 6e 64 20 74 68 65  on type, and the
1720: 6e 20 63 72 65 61 74 65 73 20 61 20 6c 69 73 74  n creates a list
1730: 20 6f 66 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20   of strings...  
1740: 20 2e 45 78 61 6d 70 6c 65 0d 0a 20 20 20 20 20   .Example..     
1750: 20 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f 72   Add-Accelerator
1760: 20 22 4c 69 73 74 20 54 22 2c 20 22 47 4c 69 73   "List T", "GLis
1770: 74 22 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  t" System.Collec
1780: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 4c 69  tions.Generic.Li
1790: 73 74 60 60 31 0d 0a 20 20 20 20 20 20 24 6c 69  st``1..      $li
17a0: 73 74 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  st = New-Object 
17b0: 22 6c 69 73 74 20 74 5b 73 74 72 69 6e 67 5d 22  "list t[string]"
17c0: 0d 0a 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20  ..      ..      
17d0: 43 72 65 61 74 65 73 20 74 77 6f 20 61 63 63 65  Creates two acce
17e0: 6c 65 72 61 74 6f 72 73 20 66 6f 72 20 74 68 65  lerators for the
17f0: 20 47 65 6e 65 72 69 63 20 4c 69 73 74 5b 54 5d   Generic List[T]
1800: 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 74 79 70 65   collection type
1810: 2e 0d 0a 20 20 20 2e 50 61 72 61 6d 65 74 65 72  ...   .Parameter
1820: 20 41 63 63 65 6c 65 72 61 74 6f 72 0d 0a 20 20   Accelerator..  
1830: 20 20 20 20 54 68 65 20 73 68 6f 72 74 20 66 6f      The short fo
1840: 72 6d 20 61 63 63 65 6c 65 72 61 74 6f 72 20 73  rm accelerator s
1850: 68 6f 75 6c 64 20 62 65 20 6a 75 73 74 20 74 68  hould be just th
1860: 65 20 6e 61 6d 65 20 79 6f 75 20 77 61 6e 74 20  e name you want 
1870: 74 6f 20 75 73 65 20 28 77 69 74 68 6f 75 74 20  to use (without 
1880: 73 71 75 61 72 65 20 62 72 61 63 6b 65 74 73 29  square brackets)
1890: 2e 0d 0a 20 20 20 2e 50 61 72 61 6d 65 74 65 72  ...   .Parameter
18a0: 20 54 79 70 65 0d 0a 20 20 20 20 20 20 54 68 65   Type..      The
18b0: 20 74 79 70 65 20 79 6f 75 20 77 61 6e 74 20 74   type you want t
18c0: 68 65 20 61 63 63 65 6c 65 72 61 74 6f 72 20 74  he accelerator t
18d0: 6f 20 61 63 63 65 6c 65 72 61 74 65 20 28 77 69  o accelerate (wi
18e0: 74 68 6f 75 74 20 73 71 75 61 72 65 20 62 72 61  thout square bra
18f0: 63 6b 65 74 73 29 0d 0a 20 20 20 2e 4e 6f 74 65  ckets)..   .Note
1900: 73 0d 0a 20 20 20 20 20 20 57 68 65 6e 20 73 70  s..      When sp
1910: 65 63 69 66 79 69 6e 67 20 6d 75 6c 74 69 70 6c  ecifying multipl
1920: 65 20 76 61 6c 75 65 73 20 66 6f 72 20 61 20 70  e values for a p
1930: 61 72 61 6d 65 74 65 72 2c 20 75 73 65 20 63 6f  arameter, use co
1940: 6d 6d 61 73 20 74 6f 20 73 65 70 61 72 61 74 65  mmas to separate
1950: 20 74 68 65 20 76 61 6c 75 65 73 2e 20 0d 0a 20   the values. .. 
1960: 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65       For example
1970: 2c 20 22 2d 41 63 63 65 6c 65 72 61 74 6f 72 20  , "-Accelerator 
1980: 73 74 72 69 6e 67 2c 20 72 65 67 65 78 22 2e 0d  string, regex"..
1990: 0a 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 50  .      ..      P
19a0: 6f 77 65 72 53 68 65 6c 6c 20 72 65 71 75 69 72  owerShell requir
19b0: 65 73 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61  es arguments tha
19c0: 74 20 61 72 65 20 22 74 79 70 65 73 22 20 74 6f  t are "types" to
19d0: 20 4e 4f 54 20 68 61 76 65 20 74 68 65 20 73 71   NOT have the sq
19e0: 75 61 72 65 20 62 72 61 63 6b 65 74 20 74 79 70  uare bracket typ
19f0: 65 20 6e 6f 74 61 74 69 6f 6e 2c 20 62 65 63 61  e notation, beca
1a00: 75 73 65 20 6f 66 20 74 68 65 20 77 61 79 20 74  use of the way t
1a10: 68 65 20 70 61 72 73 69 6e 67 20 65 6e 67 69 6e  he parsing engin
1a20: 65 20 77 6f 72 6b 73 2e 20 20 59 6f 75 20 63 61  e works.  You ca
1a30: 6e 20 65 69 74 68 65 72 20 6a 75 73 74 20 74 79  n either just ty
1a40: 70 65 20 69 6e 20 74 68 65 20 74 79 70 65 20 61  pe in the type a
1a50: 73 20 53 79 73 74 65 6d 2e 49 6e 74 36 34 2c 20  s System.Int64, 
1a60: 6f 72 20 79 6f 75 20 63 61 6e 20 70 75 74 20 70  or you can put p
1a70: 61 72 65 6e 74 68 65 73 65 73 20 61 72 6f 75 6e  arentheses aroun
1a80: 64 20 69 74 20 74 6f 20 68 65 6c 70 20 74 68 65  d it to help the
1a90: 20 70 61 72 73 65 72 20 6f 75 74 3a 20 28 5b 53   parser out: ([S
1aa0: 79 73 74 65 6d 2e 49 6e 74 36 34 5d 29 0d 0a 0d  ystem.Int64])...
1ab0: 0a 20 20 20 20 20 20 41 6c 73 6f 20 73 65 65 20  .      Also see 
1ac0: 74 68 65 20 68 65 6c 70 20 66 6f 72 20 47 65 74  the help for Get
1ad0: 2d 41 63 63 65 6c 65 72 61 74 6f 72 20 61 6e 64  -Accelerator and
1ae0: 20 52 65 6d 6f 76 65 2d 41 63 63 65 6c 65 72 61   Remove-Accelera
1af0: 74 6f 72 0d 0a 20 20 20 2e 4c 69 6e 6b 0d 0a 20  tor..   .Link.. 
1b00: 20 20 20 20 20 68 74 74 70 3a 2f 2f 68 75 64 64       http://hudd
1b10: 6c 65 64 6d 61 73 73 65 73 2e 6f 72 67 2f 70 6f  ledmasses.org/po
1b20: 77 65 72 73 68 65 6c 6c 2d 32 2d 63 74 70 33 2d  wershell-2-ctp3-
1b30: 63 75 73 74 6f 6d 2d 61 63 63 65 6c 65 72 61 74  custom-accelerat
1b40: 6f 72 73 2d 66 69 6e 61 6c 6c 79 2f 0d 0a 23 3e  ors-finally/..#>
1b50: 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67  ..[CmdletBinding
1b60: 28 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20 20  ()]..param(..   
1b70: 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74  [Parameter(Posit
1b80: 69 6f 6e 3d 30 2c 56 61 6c 75 65 46 72 6f 6d 50  ion=0,ValueFromP
1b90: 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74  ipelineByPropert
1ba0: 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a 20  yName=$true)].. 
1bb0: 20 20 5b 41 6c 69 61 73 28 22 4b 65 79 22 2c 22    [Alias("Key","
1bc0: 4e 61 6d 65 22 29 5d 0d 0a 20 20 20 5b 73 74 72  Name")]..   [str
1bd0: 69 6e 67 5b 5d 5d 24 41 63 63 65 6c 65 72 61 74  ing[]]$Accelerat
1be0: 6f 72 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d  or..,..   [Param
1bf0: 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c  eter(Position=1,
1c00: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
1c10: 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f  e=$true,ValueFro
1c20: 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65  mPipelineByPrope
1c30: 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d  rtyName=$true)].
1c40: 0a 20 20 20 5b 41 6c 69 61 73 28 22 56 61 6c 75  .   [Alias("Valu
1c50: 65 22 2c 22 46 75 6c 6c 4e 61 6d 65 22 29 5d 0d  e","FullName")].
1c60: 0a 20 20 20 5b 74 79 70 65 5d 24 54 79 70 65 0d  .   [type]$Type.
1c70: 0a 29 0d 0a 70 72 6f 63 65 73 73 20 7b 0d 0a 20  .)..process {.. 
1c80: 20 20 23 20 61 64 64 20 61 20 75 73 65 72 2d 64    # add a user-d
1c90: 65 66 69 6e 65 64 20 61 63 63 65 6c 65 72 61 74  efined accelerat
1ca0: 6f 72 20 20 0d 0a 20 20 20 66 6f 72 65 61 63 68  or  ..   foreach
1cb0: 28 24 61 20 69 6e 20 24 41 63 63 65 6c 65 72 61  ($a in $Accelera
1cc0: 74 6f 72 29 20 7b 20 0d 0a 20 20 20 20 20 20 69  tor) { ..      i
1cd0: 66 28 24 78 6c 72 38 72 3a 3a 41 64 64 52 65 70  f($xlr8r::AddRep
1ce0: 6c 61 63 65 29 20 7b 20 0d 0a 20 20 20 20 20 20  lace) { ..      
1cf0: 20 20 20 24 78 6c 72 38 72 3a 3a 41 64 64 52 65     $xlr8r::AddRe
1d00: 70 6c 61 63 65 28 20 24 61 2c 20 24 54 79 70 65  place( $a, $Type
1d10: 29 20 0d 0a 20 20 20 20 20 20 7d 20 65 6c 73 65  ) ..      } else
1d20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 24 6e 75   {..         $nu
1d30: 6c 6c 20 3d 20 24 78 6c 72 38 72 3a 3a 52 65 6d  ll = $xlr8r::Rem
1d40: 6f 76 65 28 20 24 61 20 29 0d 0a 20 20 20 20 20  ove( $a )..     
1d50: 20 20 20 20 24 78 6c 72 38 72 3a 3a 41 64 64 28      $xlr8r::Add(
1d60: 20 24 61 2c 20 24 54 79 70 65 29 0d 0a 20 20 20   $a, $Type)..   
1d70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 74 72 61 70     }..      trap
1d80: 20 5b 53 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d   [System.Managem
1d90: 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 4d  ent.Automation.M
1da0: 65 74 68 6f 64 49 6e 76 6f 63 61 74 69 6f 6e 45  ethodInvocationE
1db0: 78 63 65 70 74 69 6f 6e 5d 20 7b 0d 0a 20 20 20  xception] {..   
1dc0: 20 20 20 20 20 20 69 66 28 24 78 6c 72 38 72 3a        if($xlr8r:
1dd0: 3a 67 65 74 2e 6b 65 79 73 20 2d 63 6f 6e 74 61  :get.keys -conta
1de0: 69 6e 73 20 24 61 29 20 7b 0d 0a 20 20 20 20 20  ins $a) {..     
1df0: 20 20 20 20 20 20 20 69 66 28 24 78 6c 72 38 72         if($xlr8r
1e00: 3a 3a 67 65 74 5b 24 61 5d 20 2d 6e 65 20 24 54  ::get[$a] -ne $T
1e10: 79 70 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ype) {..        
1e20: 20 20 20 20 20 20 20 57 72 69 74 65 2d 45 72 72         Write-Err
1e30: 6f 72 20 22 43 61 6e 6e 6f 74 20 61 64 64 20 61  or "Cannot add a
1e40: 63 63 65 6c 65 72 61 74 6f 72 20 5b 24 61 5d 20  ccelerator [$a] 
1e50: 66 6f 72 20 5b 24 28 24 54 79 70 65 2e 46 75 6c  for [$($Type.Ful
1e60: 6c 4e 61 6d 65 29 5d 60 6e 20 20 20 20 20 20 20  lName)]`n       
1e70: 20 20 20 20 20 20 20 20 20 20 20 5b 24 61 5d 20             [$a] 
1e80: 69 73 20 61 6c 72 65 61 64 79 20 64 65 66 69 6e  is already defin
1e90: 65 64 20 61 73 20 5b 24 28 24 78 6c 72 38 72 3a  ed as [$($xlr8r:
1ea0: 3a 67 65 74 5b 24 61 5d 2e 46 75 6c 6c 4e 61 6d  :get[$a].FullNam
1eb0: 65 29 5d 22 0d 0a 20 20 20 20 20 20 20 20 20 20  e)]"..          
1ec0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ed0: 20 43 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   Continue;..    
1ee0: 20 20 20 20 20 7d 20 0d 0a 20 20 20 20 20 20 20       } ..       
1ef0: 20 20 74 68 72 6f 77 0d 0a 20 20 20 20 20 20 7d    throw..      }
1f00: 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a  ..   }..}..}....
1f10: 26 7b 20 0d 0a 24 6c 6f 63 61 6c 3a 78 6c 72 38  &{ ..$local:xlr8
1f20: 72 20 3d 20 5b 70 73 6f 62 6a 65 63 74 5d 2e 61  r = [psobject].a
1f30: 73 73 65 6d 62 6c 79 2e 67 65 74 74 79 70 65 28  ssembly.gettype(
1f40: 22 53 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65  "System.Manageme
1f50: 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 54 79  nt.Automation.Ty
1f60: 70 65 41 63 63 65 6c 65 72 61 74 6f 72 73 22 29  peAccelerators")
1f70: 0d 0a 24 6c 6f 63 61 6c 3a 78 6c 69 6e 71 20 3d  ..$local:xlinq =
1f80: 20 5b 52 65 66 6c 65 63 74 69 6f 6e 2e 41 73 73   [Reflection.Ass
1f90: 65 6d 62 6c 79 5d 3a 3a 4c 6f 61 64 28 22 53 79  embly]::Load("Sy
1fa0: 73 74 65 6d 2e 58 6d 6c 2e 4c 69 6e 71 2c 20 56  stem.Xml.Linq, V
1fb0: 65 72 73 69 6f 6e 3d 33 2e 35 2e 30 2e 30 2c 20  ersion=3.5.0.0, 
1fc0: 43 75 6c 74 75 72 65 3d 6e 65 75 74 72 61 6c 2c  Culture=neutral,
1fd0: 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e 3d   PublicKeyToken=
1fe0: 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39  b77a5c561934e089
1ff0: 22 29 0d 0a 24 78 6c 69 6e 71 2e 47 65 74 54 79  ")..$xlinq.GetTy
2000: 70 65 73 28 29 20 7c 20 3f 20 7b 20 24 5f 2e 49  pes() | ? { $_.I
2010: 73 50 75 62 6c 69 63 20 2d 61 6e 64 20 21 24 5f  sPublic -and !$_
2020: 2e 49 73 53 65 72 69 61 6c 69 7a 61 62 6c 65 20  .IsSerializable 
2030: 2d 61 6e 64 20 24 5f 2e 4e 61 6d 65 20 2d 6e 65  -and $_.Name -ne
2040: 20 22 45 78 74 65 6e 73 69 6f 6e 73 22 20 2d 61   "Extensions" -a
2050: 6e 64 20 21 24 78 6c 72 38 72 3a 3a 47 65 74 5b  nd !$xlr8r::Get[
2060: 24 5f 2e 4e 61 6d 65 5d 20 7d 20 7c 20 41 64 64  $_.Name] } | Add
2070: 2d 41 63 63 65 6c 65 72 61 74 6f 72 0d 0a 0d 0a  -Accelerator....
2080: 41 64 64 2d 41 63 63 65 6c 65 72 61 74 6f 72 20  Add-Accelerator 
2090: 22 44 69 63 74 69 6f 6e 61 72 79 22 20 22 53 79  "Dictionary" "Sy
20a0: 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73  stem.Collections
20b0: 2e 47 65 6e 65 72 69 63 2e 44 69 63 74 69 6f 6e  .Generic.Diction
20c0: 61 72 79 60 60 32 2c 20 6d 73 63 6f 72 6c 69 62  ary``2, mscorlib
20d0: 2c 20 56 65 72 73 69 6f 6e 3d 32 2e 30 2e 30 2e  , Version=2.0.0.
20e0: 30 2c 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72  0, Culture=neutr
20f0: 61 6c 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b  al, PublicKeyTok
2100: 65 6e 3d 62 37 37 61 35 63 35 36 31 39 33 34 65  en=b77a5c561934e
2110: 30 38 39 22 0d 0a 41 64 64 2d 41 63 63 65 6c 65  089"..Add-Accele
2120: 72 61 74 6f 72 20 22 50 53 50 61 72 73 65 72 22  rator "PSParser"
2130: 20 22 53 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d   "System.Managem
2140: 65 6e 74 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 50  ent.Automation.P
2150: 53 50 61 72 73 65 72 2c 20 53 79 73 74 65 6d 2e  SParser, System.
2160: 4d 61 6e 61 67 65 6d 65 6e 74 2e 41 75 74 6f 6d  Management.Autom
2170: 61 74 69 6f 6e 2c 20 56 65 72 73 69 6f 6e 3d 31  ation, Version=1
2180: 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d  .0.0.0, Culture=
2190: 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b  neutral, PublicK
21a0: 65 79 54 6f 6b 65 6e 3d 33 31 62 66 33 38 35 36  eyToken=31bf3856
21b0: 61 64 33 36 34 65 33 35 22 0d 0a 7d 0d 0a 0d 0a  ad364e35"..}....
21c0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74 2d 58  ..function Get-X
21d0: 6d 6c 43 6f 6e 74 65 6e 74 20 7b 0d 0a 23 2e 53  mlContent {..#.S
21e0: 79 6e 6f 70 73 69 73 0d 0a 23 20 20 20 4c 6f 61  ynopsis..#   Loa
21f0: 64 20 61 6e 20 58 4d 4c 20 66 69 6c 65 20 61 73  d an XML file as
2200: 20 61 6e 20 58 6d 6c 44 6f 63 75 6d 65 6e 74 0d   an XmlDocument.
2210: 0a 70 61 72 61 6d 28 0d 0a 20 20 20 20 23 20 53  .param(..    # S
2220: 70 65 63 69 66 69 65 73 20 61 20 73 74 72 69 6e  pecifies a strin
2230: 67 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  g that contains 
2240: 74 68 65 20 58 4d 4c 20 74 6f 20 6c 6f 61 64 2c  the XML to load,
2250: 20 6f 72 20 61 20 70 61 74 68 20 74 6f 20 61 20   or a path to a 
2260: 66 69 6c 65 20 77 68 69 63 68 20 68 61 73 20 74  file which has t
2270: 68 65 20 58 4d 4c 20 74 6f 20 6c 6f 61 64 20 28  he XML to load (
2280: 77 69 6c 64 63 61 72 64 73 20 61 72 65 20 70 65  wildcards are pe
2290: 72 6d 69 74 74 65 64 29 2e 0d 0a 20 20 20 20 5b  rmitted)...    [
22a0: 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69  Parameter(Positi
22b0: 6f 6e 3d 31 2c 4d 61 6e 64 61 74 6f 72 79 3d 24  on=1,Mandatory=$
22c0: 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69  true,ValueFromPi
22d0: 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c  peline=$true,Val
22e0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79  ueFromPipelineBy
22f0: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72  PropertyName=$tr
2300: 75 65 29 5d 0d 0a 20 20 20 20 5b 56 61 6c 69 64  ue)]..    [Valid
2310: 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74  ateNotNullOrEmpt
2320: 79 28 29 5d 0d 0a 20 20 20 20 5b 41 6c 69 61 73  y()]..    [Alias
2330: 28 22 50 53 50 61 74 68 22 2c 22 50 61 74 68 22  ("PSPath","Path"
2340: 29 5d 0d 0a 20 20 20 20 5b 53 74 72 69 6e 67 5b  )]..    [String[
2350: 5d 5d 24 43 6f 6e 74 65 6e 74 0d 0a 2c 0d 0a 20  ]]$Content..,.. 
2360: 20 20 20 23 20 49 66 20 73 65 74 2c 20 6c 6f 61     # If set, loa
2370: 64 73 20 58 4d 4c 20 77 69 74 68 20 61 6c 6c 20  ds XML with all 
2380: 6e 61 6d 65 73 70 61 63 65 20 71 75 61 6c 69 66  namespace qualif
2390: 69 65 72 73 20 72 65 6d 6f 76 65 64 2c 20 61 6e  iers removed, an
23a0: 64 20 61 6c 6c 20 65 6e 74 69 74 69 65 73 20 65  d all entities e
23b0: 78 70 61 6e 64 65 64 2e 0d 0a 20 20 20 20 5b 41  xpanded...    [A
23c0: 6c 69 61 73 28 22 52 6e 22 2c 22 52 6d 22 29 5d  lias("Rn","Rm")]
23d0: 0d 0a 20 20 20 20 5b 53 77 69 74 63 68 5d 24 52  ..    [Switch]$R
23e0: 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 0d 0a  emoveNamespace..
23f0: 29 0d 0a 62 65 67 69 6e 20 7b 0d 0a 20 20 20 20  )..begin {..    
2400: 5b 54 65 78 74 2e 53 74 72 69 6e 67 42 75 69 6c  [Text.StringBuil
2410: 64 65 72 5d 24 58 6d 6c 43 6f 6e 74 65 6e 74 20  der]$XmlContent 
2420: 3d 20 5b 53 74 72 69 6e 67 5d 3a 3a 45 6d 70 74  = [String]::Empt
2430: 79 0d 0a 20 20 20 20 5b 62 6f 6f 6c 5d 24 50 61  y..    [bool]$Pa
2440: 74 68 20 3d 20 24 74 72 75 65 0d 0a 7d 0d 0a 70  th = $true..}..p
2450: 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20 69 66  rocess {..    if
2460: 28 24 50 61 74 68 20 2d 61 6e 64 20 28 24 50 61  ($Path -and ($Pa
2470: 74 68 20 3d 20 54 65 73 74 2d 50 61 74 68 20 40  th = Test-Path @
2480: 28 24 43 6f 6e 74 65 6e 74 29 5b 30 5d 20 2d 45  ($Content)[0] -E
2490: 41 20 30 29 29 20 7b 20 0d 0a 20 20 20 20 20 20  A 0)) { ..      
24a0: 20 20 66 6f 72 65 61 63 68 28 24 66 69 6c 65 20    foreach($file 
24b0: 69 6e 20 52 65 73 6f 6c 76 65 2d 50 61 74 68 20  in Resolve-Path 
24c0: 24 43 6f 6e 74 65 6e 74 29 20 7b 0d 0a 20 20 20  $Content) {..   
24d0: 20 20 20 20 20 20 20 20 20 24 78 6d 6c 20 3d 20           $xml = 
24e0: 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65  New-Object Syste
24f0: 6d 2e 58 6d 6c 2e 58 6d 6c 44 6f 63 75 6d 65 6e  m.Xml.XmlDocumen
2500: 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
2510: 69 66 28 24 66 69 6c 65 2e 50 72 6f 76 69 64 65  if($file.Provide
2520: 72 2e 4e 61 6d 65 20 2d 65 71 20 22 46 69 6c 65  r.Name -eq "File
2530: 53 79 73 74 65 6d 22 29 20 7b 0d 0a 20 20 20 20  System") {..    
2540: 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69 74              Writ
2550: 65 2d 56 65 72 62 6f 73 65 20 24 66 69 6c 65 2e  e-Verbose $file.
2560: 50 72 6f 76 69 64 65 72 50 61 74 68 0d 0a 20 20  ProviderPath..  
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 78                $x
2580: 6d 6c 2e 4c 6f 61 64 28 20 24 66 69 6c 65 2e 50  ml.Load( $file.P
2590: 72 6f 76 69 64 65 72 50 61 74 68 20 29 0d 0a 20  roviderPath ).. 
25a0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
25b0: 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e {..           
25c0: 20 20 20 20 20 24 6f 66 73 20 3d 20 22 60 6e 22       $ofs = "`n"
25d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e0: 20 20 24 78 6d 6c 2e 4c 6f 61 64 58 6d 6c 28 20    $xml.LoadXml( 
25f0: 28 5b 53 74 72 69 6e 67 5d 28 47 65 74 2d 43 6f  ([String](Get-Co
2600: 6e 74 65 6e 74 20 24 66 69 6c 65 29 29 20 29 0d  ntent $file)) ).
2610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2620: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 24              if($
2630: 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 29  RemoveNamespace)
2640: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2650: 20 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d 6c 2e      [System.Xml.
2660: 58 6d 6c 4e 6f 64 65 5b 5d 5d 24 58 6d 6c 20 3d  XmlNode[]]$Xml =
2670: 20 40 28 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d   @(Remove-XmlNam
2680: 65 73 70 61 63 65 20 2d 58 6d 6c 20 24 6e 6f 64  espace -Xml $nod
2690: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
26a0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 57  }..            W
26b0: 72 69 74 65 2d 4f 75 74 70 75 74 20 24 78 6d 6c  rite-Output $xml
26c0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
26d0: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
26e0: 20 20 20 23 20 49 66 20 74 68 65 20 22 70 61 74     # If the "pat
26f0: 68 22 20 70 61 72 61 6d 65 74 65 72 20 69 73 6e  h" parameter isn
2700: 27 74 20 61 63 74 75 61 6c 6c 79 20 61 20 70 61  't actually a pa
2710: 74 68 2c 20 61 73 73 75 6d 65 20 74 68 61 74 20  th, assume that 
2720: 69 74 27 73 20 61 63 74 75 61 6c 6c 79 20 63 6f  it's actually co
2730: 6e 74 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 66  ntent..        f
2740: 6f 72 65 61 63 68 28 24 6c 69 6e 65 20 69 6e 20  oreach($line in 
2750: 24 63 6f 6e 74 65 6e 74 29 20 7b 0d 0a 20 20 20  $content) {..   
2760: 20 20 20 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d           $null =
2770: 20 24 58 6d 6c 43 6f 6e 74 65 6e 74 2e 41 70 70   $XmlContent.App
2780: 65 6e 64 4c 69 6e 65 28 20 24 6c 69 6e 65 20 29  endLine( $line )
2790: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
27a0: 20 7d 0d 0a 7d 0d 0a 65 6e 64 20 7b 0d 0a 20 20   }..}..end {..  
27b0: 20 20 69 66 28 21 24 50 61 74 68 29 20 7b 0d 0a    if(!$Path) {..
27c0: 20 20 20 20 20 20 20 20 24 78 6d 6c 20 3d 20 4e          $xml = N
27d0: 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d  ew-Object System
27e0: 2e 58 6d 6c 2e 58 6d 6c 44 6f 63 75 6d 65 6e 74  .Xml.XmlDocument
27f0: 3b 20 0d 0a 20 20 20 20 20 20 20 20 24 78 6d 6c  ; ..        $xml
2800: 2e 4c 6f 61 64 58 6d 6c 28 20 24 58 6d 6c 43 6f  .LoadXml( $XmlCo
2810: 6e 74 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29  ntent.ToString()
2820: 20 29 0d 0a 20 20 20 20 20 20 20 20 69 66 28 24   )..        if($
2830: 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 29  RemoveNamespace)
2840: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2850: 24 58 6d 6c 20 3d 20 40 28 52 65 6d 6f 76 65 2d  $Xml = @(Remove-
2860: 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 2d 58 6d  XmlNamespace -Xm
2870: 6c 20 24 78 6d 6c 29 0d 0a 20 20 20 20 20 20 20  l $xml)..       
2880: 20 7d 0d 0a 20 20 20 20 20 20 20 20 57 72 69 74   }..        Writ
2890: 65 2d 4f 75 74 70 75 74 20 24 78 6d 6c 0d 0a 20  e-Output $xml.. 
28a0: 20 20 20 7d 0d 0a 7d 7d 0d 0a 0d 0a 0d 0a 53 65     }..}}......Se
28b0: 74 2d 41 6c 69 61 73 20 49 6d 70 6f 72 74 2d 58  t-Alias Import-X
28c0: 6d 6c 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e  ml Get-XmlConten
28d0: 74 0d 0a 53 65 74 2d 41 6c 69 61 73 20 69 70 78  t..Set-Alias ipx
28e0: 6d 6c 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e  ml Get-XmlConten
28f0: 74 0d 0a 53 65 74 2d 41 6c 69 61 73 20 69 70 78  t..Set-Alias ipx
2900: 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e 74 0d   Get-XmlContent.
2910: 0a 53 65 74 2d 41 6c 69 61 73 20 47 65 74 2d 58  .Set-Alias Get-X
2920: 6d 6c 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e  ml Get-XmlConten
2930: 74 0d 0a 53 65 74 2d 41 6c 69 61 73 20 67 78 6d  t..Set-Alias gxm
2940: 6c 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e 74  l Get-XmlContent
2950: 0d 0a 53 65 74 2d 41 6c 69 61 73 20 67 78 20 47  ..Set-Alias gx G
2960: 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e 74 0d 0a 0d  et-XmlContent...
2970: 0a 66 75 6e 63 74 69 6f 6e 20 53 65 74 2d 58 6d  .function Set-Xm
2980: 6c 43 6f 6e 74 65 6e 74 20 7b 0d 0a 70 61 72 61  lContent {..para
2990: 6d 28 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74  m(..    [Paramet
29a0: 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72  er(Mandatory=$tr
29b0: 75 65 2c 20 50 6f 73 69 74 69 6f 6e 3d 31 29 5d  ue, Position=1)]
29c0: 0d 0a 20 20 20 20 5b 41 6c 69 61 73 28 22 50 53  ..    [Alias("PS
29d0: 50 61 74 68 22 29 5d 0d 0a 20 20 20 20 5b 53 74  Path")]..    [St
29e0: 72 69 6e 67 5d 24 50 61 74 68 0d 0a 2c 0d 0a 20  ring]$Path..,.. 
29f0: 20 20 20 23 20 53 70 65 63 69 66 69 65 73 20 6f     # Specifies o
2a00: 6e 65 20 6f 72 20 6d 6f 72 65 20 58 4d 4c 20 6e  ne or more XML n
2a10: 6f 64 65 73 20 74 6f 20 73 65 61 72 63 68 2e 0d  odes to search..
2a20: 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  .    [Parameter(
2a30: 50 6f 73 69 74 69 6f 6e 3d 35 2c 50 61 72 61 6d  Position=5,Param
2a40: 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c  eterSetName="Xml
2a50: 22 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75  ",Mandatory=$tru
2a60: 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c  e,ValueFromPipel
2a70: 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46  ine=$true,ValueF
2a80: 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f  romPipelineByPro
2a90: 70 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29  pertyName=$true)
2aa0: 5d 0d 0a 20 20 20 20 5b 56 61 6c 69 64 61 74 65  ]..    [Validate
2ab0: 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29  NotNullOrEmpty()
2ac0: 5d 0d 0a 20 20 20 20 5b 41 6c 69 61 73 28 22 4e  ]..    [Alias("N
2ad0: 6f 64 65 22 29 5d 0d 0a 20 20 20 20 5b 58 6d 6c  ode")]..    [Xml
2ae0: 5d 24 58 6d 6c 0d 0a 29 0d 0a 70 72 6f 63 65 73  ]$Xml..)..proces
2af0: 73 20 7b 0d 0a 20 20 20 20 24 78 6d 6c 2e 53 61  s {..    $xml.Sa
2b00: 76 65 28 20 24 50 61 74 68 20 29 0d 0a 7d 0d 0a  ve( $Path )..}..
2b10: 7d 0d 0a 0d 0a 53 65 74 2d 41 6c 69 61 73 20 45  }....Set-Alias E
2b20: 78 70 6f 72 74 2d 58 6d 6c 20 53 65 74 2d 58 6d  xport-Xml Set-Xm
2b30: 6c 43 6f 6e 74 65 6e 74 0d 0a 53 65 74 2d 41 6c  lContent..Set-Al
2b40: 69 61 73 20 65 70 78 6d 6c 20 53 65 74 2d 58 6d  ias epxml Set-Xm
2b50: 6c 43 6f 6e 74 65 6e 74 0d 0a 53 65 74 2d 41 6c  lContent..Set-Al
2b60: 69 61 73 20 65 70 78 20 53 65 74 2d 58 6d 6c 43  ias epx Set-XmlC
2b70: 6f 6e 74 65 6e 74 0d 0a 53 65 74 2d 41 6c 69 61  ontent..Set-Alia
2b80: 73 20 53 65 74 2d 58 6d 6c 20 53 65 74 2d 58 6d  s Set-Xml Set-Xm
2b90: 6c 43 6f 6e 74 65 6e 74 0d 0a 53 65 74 2d 41 6c  lContent..Set-Al
2ba0: 69 61 73 20 73 78 6d 6c 20 53 65 74 2d 58 6d 6c  ias sxml Set-Xml
2bb0: 43 6f 6e 74 65 6e 74 0d 0a 53 65 74 2d 41 6c 69  Content..Set-Ali
2bc0: 61 73 20 73 78 20 53 65 74 2d 58 6d 6c 43 6f 6e  as sx Set-XmlCon
2bd0: 74 65 6e 74 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e  tent....function
2be0: 20 46 6f 72 6d 61 74 2d 58 6d 6c 20 7b 0d 0a 23   Format-Xml {..#
2bf0: 2e 53 79 6e 6f 70 73 69 73 0d 0a 23 20 20 20 50  .Synopsis..#   P
2c00: 72 65 74 74 79 2d 70 72 69 6e 74 20 66 6f 72 6d  retty-print form
2c10: 61 74 74 65 64 20 58 4d 4c 20 73 6f 75 72 63 65  atted XML source
2c20: 0d 0a 23 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d  ..#.Description.
2c30: 0a 23 20 20 20 52 75 6e 73 20 61 6e 20 58 6d 6c  .#   Runs an Xml
2c40: 44 6f 63 75 6d 65 6e 74 20 74 68 72 6f 75 67 68  Document through
2c50: 20 61 6e 20 61 75 74 6f 2d 69 6e 64 65 6e 74 69   an auto-indenti
2c60: 6e 67 20 58 6d 6c 57 72 69 74 65 72 0d 0a 23 2e  ng XmlWriter..#.
2c70: 50 61 72 61 6d 65 74 65 72 20 58 6d 6c 0d 0a 23  Parameter Xml..#
2c80: 20 20 20 54 68 65 20 58 6d 6c 20 44 6f 63 75 6d     The Xml Docum
2c90: 65 6e 74 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72  ent..#.Parameter
2ca0: 20 50 61 74 68 0d 0a 23 20 20 20 54 68 65 20 70   Path..#   The p
2cb0: 61 74 68 20 74 6f 20 61 6e 20 78 6d 6c 20 64 6f  ath to an xml do
2cc0: 63 75 6d 65 6e 74 20 28 6f 6e 20 64 69 73 63 20  cument (on disc 
2cd0: 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 63 6f 6e  or any other con
2ce0: 74 65 6e 74 20 70 72 6f 76 69 64 65 72 29 2e 0d  tent provider)..
2cf0: 0a 23 2e 50 61 72 61 6d 65 74 65 72 20 49 6e 64  .#.Parameter Ind
2d00: 65 6e 74 0d 0a 23 20 20 20 54 68 65 20 69 6e 64  ent..#   The ind
2d10: 65 6e 74 20 6c 65 76 65 6c 20 28 64 65 66 61 75  ent level (defau
2d20: 6c 74 73 20 74 6f 20 32 20 73 70 61 63 65 73 29  lts to 2 spaces)
2d30: 0d 0a 23 2e 45 78 61 6d 70 6c 65 0d 0a 23 20 20  ..#.Example..#  
2d40: 20 5b 78 6d 6c 5d 24 78 6d 6c 20 3d 20 67 65 74   [xml]$xml = get
2d50: 2d 63 6f 6e 74 65 6e 74 20 44 61 74 61 2e 78 6d  -content Data.xm
2d60: 6c 0d 0a 23 20 20 20 43 3a 5c 50 53 3e 46 6f 72  l..#   C:\PS>For
2d70: 6d 61 74 2d 58 6d 6c 20 24 78 6d 6c 0d 0a 23 2e  mat-Xml $xml..#.
2d80: 45 78 61 6d 70 6c 65 0d 0a 23 20 20 20 67 65 74  Example..#   get
2d90: 2d 63 6f 6e 74 65 6e 74 20 44 61 74 61 2e 78 6d  -content Data.xm
2da0: 6c 20 7c 20 46 6f 72 6d 61 74 2d 58 6d 6c 0d 0a  l | Format-Xml..
2db0: 23 2e 45 78 61 6d 70 6c 65 0d 0a 23 20 20 20 46  #.Example..#   F
2dc0: 6f 72 6d 61 74 2d 58 6d 6c 20 43 3a 5c 50 53 5c  ormat-Xml C:\PS\
2dd0: 44 61 74 61 2e 78 6d 6c 0d 0a 23 2e 45 78 61 6d  Data.xml..#.Exam
2de0: 70 6c 65 0d 0a 23 20 20 20 6c 73 20 2a 2e 78 6d  ple..#   ls *.xm
2df0: 6c 20 7c 20 46 6f 72 6d 61 74 2d 58 6d 6c 0d 0a  l | Format-Xml..
2e00: 23 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e  #..[CmdletBindin
2e10: 67 28 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20  g()]..param(..  
2e20: 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69   [Parameter(Posi
2e30: 74 69 6f 6e 3d 30 2c 20 4d 61 6e 64 61 74 6f 72  tion=0, Mandator
2e40: 79 3d 24 74 72 75 65 2c 20 56 61 6c 75 65 46 72  y=$true, ValueFr
2e50: 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75 65  omPipeline=$true
2e60: 2c 20 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61  , ParameterSetNa
2e70: 6d 65 3d 22 44 6f 63 75 6d 65 6e 74 22 29 5d 0d  me="Document")].
2e80: 0a 20 20 20 5b 78 6d 6c 5d 24 58 6d 6c 0d 0a 2c  .   [xml]$Xml..,
2e90: 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  ..   [Parameter(
2ea0: 50 6f 73 69 74 69 6f 6e 3d 30 2c 20 4d 61 6e 64  Position=0, Mand
2eb0: 61 74 6f 72 79 3d 24 74 72 75 65 2c 20 56 61 6c  atory=$true, Val
2ec0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79  ueFromPipelineBy
2ed0: 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72  PropertyName=$tr
2ee0: 75 65 2c 20 50 61 72 61 6d 65 74 65 72 53 65 74  ue, ParameterSet
2ef0: 4e 61 6d 65 3d 22 46 69 6c 65 22 29 5d 0d 0a 20  Name="File")].. 
2f00: 20 20 5b 41 6c 69 61 73 28 22 50 73 50 61 74 68    [Alias("PsPath
2f10: 22 29 5d 0d 0a 20 20 20 5b 73 74 72 69 6e 67 5d  ")]..   [string]
2f20: 24 50 61 74 68 0d 0a 2c 0d 0a 20 20 20 5b 50 61  $Path..,..   [Pa
2f30: 72 61 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f 72  rameter(Mandator
2f40: 79 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 24  y=$false)]..   $
2f50: 49 6e 64 65 6e 74 3d 32 0d 0a 29 0d 0a 70 72 6f  Indent=2..)..pro
2f60: 63 65 73 73 20 7b 0d 0a 20 20 20 23 23 20 4c 6f  cess {..   ## Lo
2f70: 61 64 20 66 72 6f 6d 20 66 69 6c 65 2c 20 69 66  ad from file, if
2f80: 20 6e 65 63 65 73 73 61 72 79 0d 0a 20 20 20 69   necessary..   i
2f90: 66 28 24 50 61 74 68 29 20 7b 20 5b 78 6d 6c 5d  f($Path) { [xml]
2fa0: 24 78 6d 6c 20 3d 20 47 65 74 2d 43 6f 6e 74 65  $xml = Get-Conte
2fb0: 6e 74 20 24 50 61 74 68 20 7d 0d 0a 20 20 20 0d  nt $Path }..   .
2fc0: 0a 20 20 20 24 53 74 72 69 6e 67 57 72 69 74 65  .   $StringWrite
2fd0: 72 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53  r = New-Object S
2fe0: 79 73 74 65 6d 2e 49 4f 2e 53 74 72 69 6e 67 57  ystem.IO.StringW
2ff0: 72 69 74 65 72 0d 0a 20 20 20 24 58 6d 6c 57 72  riter..   $XmlWr
3000: 69 74 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65 63  iter = New-Objec
3010: 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c  t System.Xml.Xml
3020: 54 65 78 74 57 72 69 74 65 72 20 24 53 74 72 69  TextWriter $Stri
3030: 6e 67 57 72 69 74 65 72 0d 0a 20 20 20 24 78 6d  ngWriter..   $xm
3040: 6c 57 72 69 74 65 72 2e 46 6f 72 6d 61 74 74 69  lWriter.Formatti
3050: 6e 67 20 3d 20 22 69 6e 64 65 6e 74 65 64 22 0d  ng = "indented".
3060: 0a 20 20 20 24 78 6d 6c 57 72 69 74 65 72 2e 49  .   $xmlWriter.I
3070: 6e 64 65 6e 74 61 74 69 6f 6e 20 3d 20 24 49 6e  ndentation = $In
3080: 64 65 6e 74 0d 0a 20 20 20 24 78 6d 6c 2e 57 72  dent..   $xml.Wr
3090: 69 74 65 43 6f 6e 74 65 6e 74 54 6f 28 24 58 6d  iteContentTo($Xm
30a0: 6c 57 72 69 74 65 72 29 0d 0a 20 20 20 24 58 6d  lWriter)..   $Xm
30b0: 6c 57 72 69 74 65 72 2e 46 6c 75 73 68 28 29 0d  lWriter.Flush().
30c0: 0a 20 20 20 24 53 74 72 69 6e 67 57 72 69 74 65  .   $StringWrite
30d0: 72 2e 46 6c 75 73 68 28 29 0d 0a 20 20 20 57 72  r.Flush()..   Wr
30e0: 69 74 65 2d 4f 75 74 70 75 74 20 24 53 74 72 69  ite-Output $Stri
30f0: 6e 67 57 72 69 74 65 72 2e 54 6f 53 74 72 69 6e  ngWriter.ToStrin
3100: 67 28 29 0d 0a 7d 7d 0d 0a 53 65 74 2d 41 6c 69  g()..}}..Set-Ali
3110: 61 73 20 66 78 6d 6c 20 46 6f 72 6d 61 74 2d 58  as fxml Format-X
3120: 6d 6c 20 2d 45 41 20 30 0d 0a 53 65 74 2d 41 6c  ml -EA 0..Set-Al
3130: 69 61 73 20 66 78 20 20 20 46 6f 72 6d 61 74 2d  ias fx   Format-
3140: 58 6d 6c 20 2d 45 41 20 30 0d 0a 0d 0a 66 75 6e  Xml -EA 0....fun
3150: 63 74 69 6f 6e 20 53 65 6c 65 63 74 2d 58 6d 6c  ction Select-Xml
3160: 4e 6f 64 65 49 6e 74 65 72 6e 61 6c 20 7b 0d 0a  NodeInternal {..
3170: 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67 28 29  [CmdletBinding()
3180: 5d 0d 0a 70 61 72 61 6d 28 5b 58 6d 6c 2e 58 6d  ]..param([Xml.Xm
3190: 6c 4e 6f 64 65 5b 5d 5d 24 58 6d 6c 2c 20 5b 53  lNode[]]$Xml, [S
31a0: 74 72 69 6e 67 5b 5d 5d 24 58 50 61 74 68 2c 20  tring[]]$XPath, 
31b0: 5b 48 61 73 68 74 61 62 6c 65 5d 24 4e 61 6d 65  [Hashtable]$Name
31c0: 73 70 61 63 65 4d 61 6e 61 67 65 72 29 0d 0a 62  spaceManager)..b
31d0: 65 67 69 6e 20 7b 0d 0a 20 20 20 20 57 72 69 74  egin {..    Writ
31e0: 65 2d 56 65 72 62 6f 73 65 20 22 58 50 61 74 68  e-Verbose "XPath
31f0: 20 3d 20 24 28 24 58 50 61 74 68 20 2d 6a 6f 69   = $($XPath -joi
3200: 6e 20 27 2c 27 29 22 0d 0a 20 20 20 20 66 6f 72  n ',')"..    for
3210: 65 61 63 68 28 24 6e 6f 64 65 20 69 6e 20 24 78  each($node in $x
3220: 6d 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 69  ml) {..        i
3230: 66 28 24 4e 61 6d 65 73 70 61 63 65 4d 61 6e 61  f($NamespaceMana
3240: 67 65 72 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ger) {..        
3250: 20 20 20 20 24 6e 73 4d 61 6e 61 67 65 72 20 3d      $nsManager =
3260: 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53 79 73 74   new-object Syst
3270: 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 61 6d 65 73 70  em.Xml.XmlNamesp
3280: 61 63 65 4d 61 6e 61 67 65 72 20 24 6e 6f 64 65  aceManager $node
3290: 2e 4e 61 6d 65 54 61 62 6c 65 0d 0a 20 20 20 20  .NameTable..    
32a0: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 28          foreach(
32b0: 24 6e 73 20 69 6e 20 24 4e 61 6d 65 73 70 61 63  $ns in $Namespac
32c0: 65 4d 61 6e 61 67 65 72 2e 47 65 74 45 6e 75 6d  eManager.GetEnum
32d0: 65 72 61 74 6f 72 28 29 29 20 7b 0d 0a 20 20 20  erator()) {..   
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 73               $ns
32f0: 4d 61 6e 61 67 65 72 2e 41 64 64 4e 61 6d 65 73  Manager.AddNames
3300: 70 61 63 65 28 20 24 6e 73 2e 4b 65 79 2c 20 24  pace( $ns.Key, $
3310: 6e 73 2e 56 61 6c 75 65 20 29 0d 0a 20 20 20 20  ns.Value )..    
3320: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3330: 20 20 20 20 20 20 20 57 72 69 74 65 2d 56 65 72         Write-Ver
3340: 62 6f 73 65 20 22 4e 61 6d 65 73 20 3d 20 24 28  bose "Names = $(
3350: 24 6e 73 4d 61 6e 61 67 65 72 20 7c 20 25 20 7b  $nsManager | % {
3360: 20 40 7b 20 24 5f 20 3d 20 24 6e 73 4d 61 6e 61   @{ $_ = $nsMana
3370: 67 65 72 2e 4c 6f 6f 6b 75 70 4e 61 6d 65 73 70  ger.LookupNamesp
3380: 61 63 65 28 24 5f 29 20 7d 20 7d 20 7c 20 4f 75  ace($_) } } | Ou
3390: 74 2d 53 74 72 69 6e 67 29 22 0d 0a 20 20 20 20  t-String)"..    
33a0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 66      }..        f
33b0: 6f 72 65 61 63 68 28 24 70 61 74 68 20 69 6e 20  oreach($path in 
33c0: 24 78 70 61 74 68 29 20 7b 0d 0a 20 20 20 20 20  $xpath) {..     
33d0: 20 20 20 20 20 20 20 24 6e 6f 64 65 2e 53 65 6c         $node.Sel
33e0: 65 63 74 4e 6f 64 65 73 28 24 70 61 74 68 2c 20  ectNodes($path, 
33f0: 24 6e 73 4d 61 6e 61 67 65 72 29 0d 0a 20 20 20  $nsManager)..   
3400: 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 7d       }..    }..}
3410: 7d 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 53 65  }....function Se
3420: 6c 65 63 74 2d 58 6d 6c 20 7b 0d 0a 23 2e 53 79  lect-Xml {..#.Sy
3430: 6e 6f 70 73 69 73 0d 0a 23 20 20 54 68 65 20 53  nopsis..#  The S
3440: 65 6c 65 63 74 2d 58 4d 4c 20 63 6d 64 6c 65 74  elect-XML cmdlet
3450: 20 6c 65 74 73 20 79 6f 75 20 75 73 65 20 58 50   lets you use XP
3460: 61 74 68 20 71 75 65 72 69 65 73 20 74 6f 20 73  ath queries to s
3470: 65 61 72 63 68 20 66 6f 72 20 74 65 78 74 20 69  earch for text i
3480: 6e 20 58 4d 4c 20 73 74 72 69 6e 67 73 20 61 6e  n XML strings an
3490: 64 20 64 6f 63 75 6d 65 6e 74 73 2e 20 45 6e 74  d documents. Ent
34a0: 65 72 20 61 6e 20 58 50 61 74 68 20 71 75 65 72  er an XPath quer
34b0: 79 2c 20 61 6e 64 20 75 73 65 20 74 68 65 20 43  y, and use the C
34c0: 6f 6e 74 65 6e 74 2c 20 50 61 74 68 2c 20 6f 72  ontent, Path, or
34d0: 20 58 6d 6c 20 70 61 72 61 6d 65 74 65 72 20 74   Xml parameter t
34e0: 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 58 4d  o specify the XM
34f0: 4c 20 74 6f 20 62 65 20 73 65 61 72 63 68 65 64  L to be searched
3500: 2e 0d 0a 23 2e 44 65 73 63 72 69 70 74 69 6f 6e  ...#.Description
3510: 0d 0a 23 20 20 49 6d 70 72 6f 76 65 73 20 6f 76  ..#  Improves ov
3520: 65 72 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  er the built-in 
3530: 53 65 6c 65 63 74 2d 58 4d 4c 20 62 79 20 6c 65  Select-XML by le
3540: 76 65 72 61 67 69 6e 67 20 52 65 6d 6f 76 65 2d  veraging Remove-
3550: 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 74 6f 20  XmlNamespace to 
3560: 70 72 6f 76 69 64 65 20 61 20 2d 52 65 6d 6f 76  provide a -Remov
3570: 65 4e 61 6d 65 73 70 61 63 65 20 70 61 72 61 6d  eNamespace param
3580: 65 74 65 72 20 2d 2d 20 69 66 20 69 74 27 73 20  eter -- if it's 
3590: 73 75 70 70 6c 69 65 64 2c 20 61 6c 6c 20 6f 66  supplied, all of
35a0: 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 20 64   the namespace d
35b0: 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 6e 64 20  eclarations and 
35c0: 70 72 65 66 69 78 65 73 20 61 72 65 20 72 65 6d  prefixes are rem
35d0: 6f 76 65 64 20 66 72 6f 6d 20 61 6c 6c 20 58 4d  oved from all XM
35e0: 4c 20 6e 6f 64 65 73 20 28 62 79 20 61 6e 20 58  L nodes (by an X
35f0: 53 4c 20 74 72 61 6e 73 66 6f 72 6d 29 20 62 65  SL transform) be
3600: 66 6f 72 65 20 73 65 61 72 63 68 69 6e 67 2e 20  fore searching. 
3610: 20 0d 0a 23 20 20 0d 0a 23 20 20 48 6f 77 65 76   ..#  ..#  Howev
3620: 65 72 2c 20 6f 6e 6c 79 20 72 61 77 20 58 6d 6c  er, only raw Xml
3630: 4e 6f 64 65 73 20 61 72 65 20 72 65 74 75 72 6e  Nodes are return
3640: 65 64 20 66 72 6f 6d 20 74 68 69 73 20 66 75 6e  ed from this fun
3650: 63 74 69 6f 6e 2c 20 73 6f 20 74 68 65 20 6f 75  ction, so the ou
3660: 74 70 75 74 20 69 73 6e 27 74 20 63 75 72 72 65  tput isn't curre
3670: 6e 74 6c 79 20 63 6f 6d 70 61 74 69 62 6c 65 20  ntly compatible 
3680: 77 69 74 68 20 74 68 65 20 62 75 69 6c 74 20 69  with the built i
3690: 6e 20 53 65 6c 65 63 74 2d 58 6d 6c 2c 20 62 75  n Select-Xml, bu
36a0: 74 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  t is equivalent 
36b0: 74 6f 20 75 73 69 6e 67 20 53 65 6c 65 63 74 2d  to using Select-
36c0: 58 6d 6c 20 2e 2e 2e 20 7c 20 53 65 6c 65 63 74  Xml ... | Select
36d0: 2d 4f 62 6a 65 63 74 20 2d 45 78 70 61 6e 64 20  -Object -Expand 
36e0: 4e 6f 64 65 0d 0a 23 0d 0a 23 20 20 41 6c 73 6f  Node..#..#  Also
36f0: 20 6e 6f 74 65 20 74 68 61 74 20 69 66 20 74 68   note that if th
3700: 65 20 2d 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61  e -RemoveNamespa
3710: 63 65 20 73 77 69 74 63 68 20 69 73 20 73 75 70  ce switch is sup
3720: 70 6c 69 65 64 20 74 68 65 20 72 65 74 75 72 6e  plied the return
3730: 65 64 20 72 65 73 75 6c 74 73 20 2a 77 69 6c 6c  ed results *will
3740: 20 6e 6f 74 2a 20 68 61 76 65 20 6e 61 6d 65 73   not* have names
3750: 70 61 63 65 73 20 69 6e 20 74 68 65 6d 2c 20 65  paces in them, e
3760: 76 65 6e 20 69 66 20 74 68 65 20 69 6e 70 75 74  ven if the input
3770: 20 58 4d 4c 20 64 69 64 2c 20 61 6e 64 20 65 6e   XML did, and en
3780: 74 69 74 69 65 73 20 67 65 74 20 65 78 70 61 6e  tities get expan
3790: 64 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ded automaticall
37a0: 79 2e 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69  y...[CmdletBindi
37b0: 6e 67 28 44 65 66 61 75 6c 74 50 61 72 61 6d 65  ng(DefaultParame
37c0: 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22  terSetName="Xml"
37d0: 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20 20 20  )]..param(..    
37e0: 23 20 53 70 65 63 69 66 69 65 73 20 61 6e 20 58  # Specifies an X
37f0: 50 61 74 68 20 73 65 61 72 63 68 20 71 75 65 72  Path search quer
3800: 79 2e 20 54 68 65 20 71 75 65 72 79 20 6c 61 6e  y. The query lan
3810: 67 75 61 67 65 20 69 73 20 63 61 73 65 2d 73 65  guage is case-se
3820: 6e 73 69 74 69 76 65 2e 20 54 68 69 73 20 70 61  nsitive. This pa
3830: 72 61 6d 65 74 65 72 20 69 73 20 72 65 71 75 69  rameter is requi
3840: 72 65 64 2e 0d 0a 20 20 20 20 5b 50 61 72 61 6d  red...    [Param
3850: 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c  eter(Position=1,
3860: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c  Mandatory=$true,
3870: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
3880: 65 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20  e=$false)]..    
3890: 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  [ValidateNotNull
38a0: 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20  OrEmpty()]..    
38b0: 5b 41 6c 69 61 73 28 22 51 75 65 72 79 22 29 5d  [Alias("Query")]
38c0: 0d 0a 20 20 20 20 5b 53 74 72 69 6e 67 5b 5d 5d  ..    [String[]]
38d0: 24 58 50 61 74 68 0d 0a 2c 0d 0a 20 20 20 20 23  $XPath..,..    #
38e0: 20 53 70 65 63 69 66 69 65 73 20 61 20 73 74 72   Specifies a str
38f0: 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ing that contain
3900: 73 20 74 68 65 20 58 4d 4c 20 74 6f 20 73 65 61  s the XML to sea
3910: 72 63 68 2e 20 59 6f 75 20 63 61 6e 20 61 6c 73  rch. You can als
3920: 6f 20 70 69 70 65 20 73 74 72 69 6e 67 73 20 74  o pipe strings t
3930: 6f 20 53 65 6c 65 63 74 2d 58 4d 4c 2e 0d 0a 20  o Select-XML... 
3940: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 61     [Parameter(Pa
3950: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22  rameterSetName="
3960: 43 6f 6e 74 65 6e 74 22 2c 4d 61 6e 64 61 74 6f  Content",Mandato
3970: 72 79 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20  ry=$true)]..    
3980: 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  [ValidateNotNull
3990: 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20  OrEmpty()]..    
39a0: 5b 53 74 72 69 6e 67 5b 5d 5d 24 43 6f 6e 74 65  [String[]]$Conte
39b0: 6e 74 0d 0a 2c 0d 0a 20 20 20 20 23 20 53 70 65  nt..,..    # Spe
39c0: 63 69 66 69 65 73 20 74 68 65 20 70 61 74 68 20  cifies the path 
39d0: 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 73 20 6f  and file names o
39e0: 66 20 74 68 65 20 58 4d 4c 20 66 69 6c 65 73 20  f the XML files 
39f0: 74 6f 20 73 65 61 72 63 68 2e 20 20 57 69 6c 64  to search.  Wild
3a00: 63 61 72 64 73 20 61 72 65 20 70 65 72 6d 69 74  cards are permit
3a10: 74 65 64 2e 0d 0a 20 20 20 20 5b 50 61 72 61 6d  ted...    [Param
3a20: 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 35 2c  eter(Position=5,
3a30: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
3a40: 3d 22 50 61 74 68 22 2c 4d 61 6e 64 61 74 6f 72  ="Path",Mandator
3a50: 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f  y=$true,ValueFro
3a60: 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65  mPipelineByPrope
3a70: 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d  rtyName=$true)].
3a80: 0a 20 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  .    [ValidateNo
3a90: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
3aa0: 0a 20 20 20 20 5b 41 6c 69 61 73 28 22 50 53 50  .    [Alias("PSP
3ab0: 61 74 68 22 29 5d 0d 0a 20 20 20 20 5b 53 74 72  ath")]..    [Str
3ac0: 69 6e 67 5b 5d 5d 24 50 61 74 68 0d 0a 2c 0d 0a  ing[]]$Path..,..
3ad0: 20 20 20 20 23 20 53 70 65 63 69 66 69 65 73 20      # Specifies 
3ae0: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 58 4d 4c 20  one or more XML 
3af0: 6e 6f 64 65 73 20 74 6f 20 73 65 61 72 63 68 2e  nodes to search.
3b00: 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72  ..    [Parameter
3b10: 28 50 6f 73 69 74 69 6f 6e 3d 35 2c 50 61 72 61  (Position=5,Para
3b20: 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d  meterSetName="Xm
3b30: 6c 22 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72  l",Mandatory=$tr
3b40: 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  ue,ValueFromPipe
3b50: 6c 69 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65  line=$true,Value
3b60: 46 72 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72  FromPipelineByPr
3b70: 6f 70 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65  opertyName=$true
3b80: 29 5d 0d 0a 20 20 20 20 5b 56 61 6c 69 64 61 74  )]..    [Validat
3b90: 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  eNotNullOrEmpty(
3ba0: 29 5d 0d 0a 20 20 20 20 5b 41 6c 69 61 73 28 22  )]..    [Alias("
3bb0: 4e 6f 64 65 22 29 5d 0d 0a 20 20 20 20 5b 53 79  Node")]..    [Sy
3bc0: 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 6f 64 65  stem.Xml.XmlNode
3bd0: 5b 5d 5d 24 58 6d 6c 0d 0a 2c 0d 0a 20 20 20 20  []]$Xml..,..    
3be0: 23 20 53 70 65 63 69 66 69 65 73 20 61 20 68 61  # Specifies a ha
3bf0: 73 68 20 74 61 62 6c 65 20 6f 66 20 74 68 65 20  sh table of the 
3c00: 6e 61 6d 65 73 70 61 63 65 73 20 75 73 65 64 20  namespaces used 
3c10: 69 6e 20 74 68 65 20 58 4d 4c 2e 20 55 73 65 20  in the XML. Use 
3c20: 74 68 65 20 66 6f 72 6d 61 74 20 40 7b 3c 6e 61  the format @{<na
3c30: 6d 65 73 70 61 63 65 4e 61 6d 65 3e 20 3d 20 3c  mespaceName> = <
3c40: 6e 61 6d 65 73 70 61 63 65 55 72 69 3e 7d 2e 0d  namespaceUri>}..
3c50: 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  .    [Parameter(
3c60: 50 6f 73 69 74 69 6f 6e 3d 31 30 2c 4d 61 6e 64  Position=10,Mand
3c70: 61 74 6f 72 79 3d 24 66 61 6c 73 65 29 5d 0d 0a  atory=$false)]..
3c80: 20 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74      [ValidateNot
3c90: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a  NullOrEmpty()]..
3ca0: 20 20 20 20 5b 41 6c 69 61 73 28 22 4e 73 22 29      [Alias("Ns")
3cb0: 5d 0d 0a 20 20 20 20 5b 48 61 73 68 74 61 62 6c  ]..    [Hashtabl
3cc0: 65 5d 24 4e 61 6d 65 73 70 61 63 65 0d 0a 2c 0d  e]$Namespace..,.
3cd0: 0a 20 20 20 20 23 20 41 6c 6c 6f 77 73 20 74 68  .    # Allows th
3ce0: 65 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 58  e execution of X
3cf0: 50 61 74 68 20 71 75 65 72 69 65 73 20 77 69 74  Path queries wit
3d00: 68 6f 75 74 20 6e 61 6d 65 73 70 61 63 65 20 71  hout namespace q
3d10: 75 61 6c 69 66 69 65 72 73 2e 20 0d 0a 20 20 20  ualifiers. ..   
3d20: 20 23 20 0d 0a 20 20 20 20 23 20 49 66 20 79 6f   # ..    # If yo
3d30: 75 20 73 70 65 63 69 66 79 20 74 68 65 20 2d 52  u specify the -R
3d40: 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 20 73  emoveNamespace s
3d50: 77 69 74 63 68 2c 20 61 6c 6c 20 6e 61 6d 65 73  witch, all names
3d60: 70 61 63 65 20 64 65 63 6c 61 72 61 74 69 6f 6e  pace declaration
3d70: 73 20 61 6e 64 20 70 72 65 66 69 78 65 73 20 61  s and prefixes a
3d80: 72 65 20 61 63 74 75 61 6c 6c 79 20 72 65 6d 6f  re actually remo
3d90: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 58 6d 6c  ved from the Xml
3da0: 20 62 65 66 6f 72 65 20 74 68 65 20 58 50 61 74   before the XPat
3db0: 68 20 73 65 61 72 63 68 20 71 75 65 72 79 20 69  h search query i
3dc0: 73 20 65 76 61 6c 75 61 74 65 64 2c 20 61 6e 64  s evaluated, and
3dd0: 20 79 6f 75 72 20 58 50 61 74 68 20 71 75 65 72   your XPath quer
3de0: 79 20 73 68 6f 75 6c 64 20 74 68 65 72 65 66 6f  y should therefo
3df0: 72 65 20 4e 4f 54 20 63 6f 6e 74 61 69 6e 20 61  re NOT contain a
3e00: 6e 79 20 6e 61 6d 65 73 70 61 63 65 20 70 72 65  ny namespace pre
3e10: 66 69 78 65 73 2e 0d 0a 20 20 20 20 23 20 0d 0a  fixes...    # ..
3e20: 20 20 20 20 23 20 4e 6f 74 65 20 74 68 61 74 20      # Note that 
3e30: 74 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20  this means that 
3e40: 74 68 65 20 72 65 74 75 72 6e 65 64 20 72 65 73  the returned res
3e50: 75 6c 74 73 20 2a 77 69 6c 6c 20 6e 6f 74 2a 20  ults *will not* 
3e60: 68 61 76 65 20 6e 61 6d 65 73 70 61 63 65 73 20  have namespaces 
3e70: 69 6e 20 74 68 65 6d 2c 20 65 76 65 6e 20 69 66  in them, even if
3e80: 20 74 68 65 20 69 6e 70 75 74 20 58 4d 4c 20 64   the input XML d
3e90: 69 64 2c 20 61 6e 64 20 65 6e 74 69 74 69 65 73  id, and entities
3ea0: 20 67 65 74 20 65 78 70 61 6e 64 65 64 20 61 75   get expanded au
3eb0: 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0d 0a 20 20  tomatically...  
3ec0: 20 20 5b 41 6c 69 61 73 28 22 52 6e 22 2c 22 52    [Alias("Rn","R
3ed0: 6d 22 29 5d 0d 0a 20 20 20 20 5b 53 77 69 74 63  m")]..    [Switc
3ee0: 68 5d 24 52 65 6d 6f 76 65 4e 61 6d 65 73 70 61  h]$RemoveNamespa
3ef0: 63 65 0d 0a 29 0d 0a 62 65 67 69 6e 20 7b 0d 0a  ce..)..begin {..
3f00: 20 20 20 20 24 4e 53 4d 20 3d 20 24 4e 75 6c 6c      $NSM = $Null
3f10: 3b 20 69 66 28 24 50 53 42 6f 75 6e 64 50 61 72  ; if($PSBoundPar
3f20: 61 6d 65 74 65 72 73 2e 43 6f 6e 74 61 69 6e 73  ameters.Contains
3f30: 4b 65 79 28 22 4e 61 6d 65 73 70 61 63 65 22 29  Key("Namespace")
3f40: 29 20 7b 20 24 4e 53 4d 20 3d 20 24 4e 61 6d 65  ) { $NSM = $Name
3f50: 73 70 61 63 65 20 7d 0d 0a 20 20 20 20 24 58 6d  space }..    $Xm
3f60: 6c 4e 6f 64 65 73 20 3d 20 4e 65 77 2d 4f 62 6a  lNodes = New-Obj
3f70: 65 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e 58  ect System.Xml.X
3f80: 6d 6c 4e 6f 64 65 5b 5d 20 31 0d 0a 20 20 20 20  mlNode[] 1..    
3f90: 69 66 28 24 50 53 43 6d 64 6c 65 74 2e 50 61 72  if($PSCmdlet.Par
3fa0: 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 20 2d 65  ameterSetName -e
3fb0: 71 20 22 43 6f 6e 74 65 6e 74 22 29 20 7b 0d 0a  q "Content") {..
3fc0: 20 20 20 20 20 20 20 20 24 58 6d 6c 4e 6f 64 65          $XmlNode
3fd0: 73 20 3d 20 43 6f 6e 76 65 72 74 54 6f 2d 58 6d  s = ConvertTo-Xm
3fe0: 6c 20 24 43 6f 6e 74 65 6e 74 20 2d 52 65 6d 6f  l $Content -Remo
3ff0: 76 65 4e 61 6d 65 73 70 61 63 65 3a 24 52 65 6d  veNamespace:$Rem
4000: 6f 76 65 4e 61 6d 65 73 70 61 63 65 0d 0a 20 20  oveNamespace..  
4010: 20 20 20 20 20 20 53 65 6c 65 63 74 2d 58 6d 6c        Select-Xml
4020: 4e 6f 64 65 49 6e 74 65 72 6e 61 6c 20 24 58 6d  NodeInternal $Xm
4030: 6c 4e 6f 64 65 73 20 24 58 50 61 74 68 20 24 4e  lNodes $XPath $N
4040: 53 4d 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 70 72  SM..    }..}..pr
4050: 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20 73 77 69  ocess {..    swi
4060: 74 63 68 28 24 50 53 43 6d 64 6c 65 74 2e 50 61  tch($PSCmdlet.Pa
4070: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 29 20  rameterSetName) 
4080: 7b 0d 0a 20 20 20 20 20 20 20 20 22 50 61 74 68  {..        "Path
4090: 22 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " {..           
40a0: 20 24 6e 6f 64 65 20 3d 20 43 6f 6e 76 65 72 74   $node = Convert
40b0: 54 6f 2d 58 6d 6c 20 24 50 61 74 68 20 2d 52 65  To-Xml $Path -Re
40c0: 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 3a 24 52  moveNamespace:$R
40d0: 65 6d 6f 76 65 4e 61 6d 65 73 70 61 63 65 0d 0a  emoveNamespace..
40e0: 20 20 20 20 20 20 20 20 20 20 20 20 53 65 6c 65              Sele
40f0: 63 74 2d 58 6d 6c 4e 6f 64 65 49 6e 74 65 72 6e  ct-XmlNodeIntern
4100: 61 6c 20 24 6e 6f 64 65 20 24 58 50 61 74 68 20  al $node $XPath 
4110: 24 4e 53 4d 0d 0a 20 20 20 20 20 20 20 20 7d 0d  $NSM..        }.
4120: 0a 20 20 20 20 20 20 20 20 22 58 6d 6c 22 20 7b  .        "Xml" {
4130: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ..            fo
4140: 72 65 61 63 68 28 24 6e 6f 64 65 20 69 6e 20 24  reach($node in $
4150: 58 6d 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  Xml) {..        
4160: 20 20 20 20 20 20 20 20 69 66 28 24 52 65 6d 6f          if($Remo
4170: 76 65 4e 61 6d 65 73 70 61 63 65 29 20 7b 0d 0a  veNamespace) {..
4180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4190: 20 20 20 5b 58 6d 6c 5d 24 6e 6f 64 65 20 3d 20     [Xml]$node = 
41a0: 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d 65 73 70  Remove-XmlNamesp
41b0: 61 63 65 20 2d 58 6d 6c 20 24 6e 6f 64 65 0d 0a  ace -Xml $node..
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
41e0: 20 20 20 53 65 6c 65 63 74 2d 58 6d 6c 4e 6f 64     Select-XmlNod
41f0: 65 49 6e 74 65 72 6e 61 6c 20 24 6e 6f 64 65 20  eInternal $node 
4200: 24 58 50 61 74 68 20 24 4e 53 4d 0d 0a 20 20 20  $XPath $NSM..   
4210: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4220: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 7d      }..    }..}}
4230: 0d 0a 53 65 74 2d 41 6c 69 61 73 20 73 6c 78 6d  ..Set-Alias slxm
4240: 6c 20 53 65 6c 65 63 74 2d 58 6d 6c 20 2d 45 41  l Select-Xml -EA
4250: 20 30 0d 0a 53 65 74 2d 41 6c 69 61 73 20 73 6c   0..Set-Alias sl
4260: 78 20 53 65 6c 65 63 74 2d 58 6d 6c 20 2d 45 41  x Select-Xml -EA
4270: 20 30 0d 0a 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e   0......function
4280: 20 55 70 64 61 74 65 2d 58 6d 6c 20 7b 0d 0a 23   Update-Xml {..#
4290: 2e 53 79 6e 6f 70 73 69 73 0d 0a 23 20 20 54 68  .Synopsis..#  Th
42a0: 65 20 55 70 64 61 74 65 2d 58 4d 4c 20 63 6d 64  e Update-XML cmd
42b0: 6c 65 74 20 6c 65 74 73 20 79 6f 75 20 75 73 65  let lets you use
42c0: 20 58 50 61 74 68 20 71 75 65 72 69 65 73 20 74   XPath queries t
42d0: 6f 20 72 65 70 6c 61 63 65 20 74 65 78 74 20 69  o replace text i
42e0: 6e 20 6e 6f 64 65 73 20 69 6e 20 58 4d 4c 20 64  n nodes in XML d
42f0: 6f 63 75 6d 65 6e 74 73 2e 20 45 6e 74 65 72 20  ocuments. Enter 
4300: 61 6e 20 58 50 61 74 68 20 71 75 65 72 79 2c 20  an XPath query, 
4310: 61 6e 64 20 75 73 65 20 74 68 65 20 43 6f 6e 74  and use the Cont
4320: 65 6e 74 2c 20 50 61 74 68 2c 20 6f 72 20 58 6d  ent, Path, or Xm
4330: 6c 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  l parameter to s
4340: 70 65 63 69 66 79 20 74 68 65 20 58 4d 4c 20 74  pecify the XML t
4350: 6f 20 62 65 20 73 65 61 72 63 68 65 64 2e 0d 0a  o be searched...
4360: 23 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23  #.Description..#
4370: 20 20 41 6c 6c 6f 77 73 20 79 6f 75 20 74 6f 20    Allows you to 
4380: 75 70 64 61 74 65 20 61 6e 20 61 74 74 72 69 62  update an attrib
4390: 75 74 65 20 76 61 6c 75 65 2c 20 78 6d 6c 20 6e  ute value, xml n
43a0: 6f 64 65 20 63 6f 6e 74 65 6e 74 73 2c 20 65 74  ode contents, et
43b0: 63 2e 0d 0a 23 0d 0a 23 2e 4e 6f 74 65 73 0d 0a  c...#..#.Notes..
43c0: 23 20 20 57 65 20 73 74 69 6c 6c 20 6e 65 65 64  #  We still need
43d0: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 52 65   to implement Re
43e0: 6d 6f 76 65 4e 6f 64 65 20 61 6e 64 20 52 65 6d  moveNode and Rem
43f0: 6f 76 65 41 74 74 72 69 62 75 74 65 20 61 6e 64  oveAttribute and
4400: 20 65 76 65 6e 20 52 65 70 6c 61 63 65 4e 6f 64   even ReplaceNod
4410: 65 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69 6e  e..[CmdletBindin
4420: 67 28 44 65 66 61 75 6c 74 50 61 72 61 6d 65 74  g(DefaultParamet
4430: 65 72 53 65 74 4e 61 6d 65 3d 22 53 65 74 22 29  erSetName="Set")
4440: 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20 20 20 23  ]..param(..    #
4450: 20 53 70 65 63 69 66 69 65 73 20 61 6e 20 58 50   Specifies an XP
4460: 61 74 68 20 66 6f 72 20 61 6e 20 65 6c 65 6d 65  ath for an eleme
4470: 6e 74 20 77 68 65 72 65 20 79 6f 75 20 77 61 6e  nt where you wan
4480: 74 20 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20  t to insert the 
4490: 6e 65 77 20 6e 6f 64 65 2e 0d 0a 20 20 20 20 5b  new node...    [
44a0: 50 61 72 61 6d 65 74 65 72 28 50 61 72 61 6d 65  Parameter(Parame
44b0: 74 65 72 53 65 74 4e 61 6d 65 3d 22 42 65 66 6f  terSetName="Befo
44c0: 72 65 22 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74  re",Mandatory=$t
44d0: 72 75 65 29 5d 0d 0a 20 20 20 20 5b 56 61 6c 69  rue)]..    [Vali
44e0: 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d 70  dateNotNullOrEmp
44f0: 74 79 28 29 5d 0d 0a 20 20 20 20 5b 53 77 69 74  ty()]..    [Swit
4500: 63 68 5d 24 42 65 66 6f 72 65 0d 0a 2c 0d 0a 20  ch]$Before..,.. 
4510: 20 20 20 23 20 53 70 65 63 69 66 69 65 73 20 61     # Specifies a
4520: 6e 20 58 50 61 74 68 20 66 6f 72 20 61 6e 20 65  n XPath for an e
4530: 6c 65 6d 65 6e 74 20 77 68 65 72 65 20 79 6f 75  lement where you
4540: 20 77 61 6e 74 20 74 6f 20 69 6e 73 65 72 74 20   want to insert 
4550: 74 68 65 20 6e 65 77 20 6e 6f 64 65 2e 0d 0a 20  the new node... 
4560: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 61     [Parameter(Pa
4570: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22  rameterSetName="
4580: 41 66 74 65 72 22 2c 4d 61 6e 64 61 74 6f 72 79  After",Mandatory
4590: 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b 56  =$true)]..    [V
45a0: 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72  alidateNotNullOr
45b0: 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20 5b 53  Empty()]..    [S
45c0: 77 69 74 63 68 5d 24 41 66 74 65 72 0d 0a 2c 0d  witch]$After..,.
45d0: 0a 20 20 20 20 23 20 49 66 20 73 65 74 2c 20 74  .    # If set, t
45e0: 68 65 20 6e 65 77 20 76 61 6c 75 65 20 77 69 6c  he new value wil
45f0: 6c 20 62 65 20 61 64 64 65 64 20 61 73 20 61 20  l be added as a 
4600: 6e 65 77 20 63 68 69 6c 64 20 6f 66 20 74 68 65  new child of the
4610: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 64   node identified
4620: 20 62 79 20 74 68 65 20 58 50 61 74 68 0d 0a 20   by the XPath.. 
4630: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 61     [Parameter(Pa
4640: 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22  rameterSetName="
4650: 41 70 70 65 6e 64 22 2c 4d 61 6e 64 61 74 6f 72  Append",Mandator
4660: 79 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20 5b  y=$true)]..    [
4670: 53 77 69 74 63 68 5d 24 41 70 70 65 6e 64 0d 0a  Switch]$Append..
4680: 2c 0d 0a 20 20 20 20 23 20 49 66 20 73 65 74 2c  ,..    # If set,
4690: 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69   the node identi
46a0: 66 69 65 64 20 62 79 20 74 68 65 20 58 50 61 74  fied by the XPat
46b0: 68 20 77 69 6c 6c 20 62 65 20 72 65 6d 6f 76 65  h will be remove
46c0: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 73 65 74  d instead of set
46d0: 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72  ..    [Parameter
46e0: 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d  (ParameterSetNam
46f0: 65 3d 22 52 65 6d 6f 76 65 22 2c 4d 61 6e 64 61  e="Remove",Manda
4700: 74 6f 72 79 3d 24 74 72 75 65 29 5d 0d 0a 20 20  tory=$true)]..  
4710: 20 20 5b 53 77 69 74 63 68 5d 24 52 65 6d 6f 76    [Switch]$Remov
4720: 65 0d 0a 2c 0d 0a 20 20 20 20 23 20 49 66 20 73  e..,..    # If s
4730: 65 74 2c 20 74 68 65 20 6e 6f 64 65 20 69 64 65  et, the node ide
4740: 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20 58  ntified by the X
4750: 50 61 74 68 20 77 69 6c 6c 20 62 65 20 52 65 70  Path will be Rep
4760: 6c 61 63 65 20 69 6e 73 74 65 61 64 20 6f 66 20  lace instead of 
4770: 73 65 74 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65  set..    [Parame
4780: 74 65 72 28 50 61 72 61 6d 65 74 65 72 53 65 74  ter(ParameterSet
4790: 4e 61 6d 65 3d 22 52 65 70 6c 61 63 65 22 2c 4d  Name="Replace",M
47a0: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d  andatory=$true)]
47b0: 0d 0a 20 20 20 20 5b 53 77 69 74 63 68 5d 24 52  ..    [Switch]$R
47c0: 65 70 6c 61 63 65 0d 0a 2c 0d 0a 20 20 20 20 23  eplace..,..    #
47d0: 20 53 70 65 63 69 66 69 65 73 20 61 6e 20 58 50   Specifies an XP
47e0: 61 74 68 20 66 6f 72 20 74 68 65 20 6e 6f 64 65  ath for the node
47f0: 20 74 6f 20 75 70 64 61 74 65 2e 20 54 68 69 73   to update. This
4800: 20 63 6f 75 6c 64 20 62 65 20 61 6e 20 65 6c 65   could be an ele
4810: 6d 65 6e 74 20 6e 6f 64 65 20 2a 6f 72 2a 20 61  ment node *or* a
4820: 6e 20 61 74 74 72 69 62 75 74 65 20 6e 6f 64 65  n attribute node
4830: 20 28 72 65 6d 65 6d 62 65 72 3a 20 2f 2f 65 6c   (remember: //el
4840: 65 6d 65 6e 74 2f 40 61 74 74 72 69 62 75 74 65  ement/@attribute
4850: 20 29 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74   )..    [Paramet
4860: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c 4d 61  er(Position=1,Ma
4870: 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d 0d  ndatory=$true)].
4880: 0a 20 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  .    [ValidateNo
4890: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
48a0: 0a 20 20 20 20 5b 53 74 72 69 6e 67 5b 5d 5d 24  .    [String[]]$
48b0: 58 50 61 74 68 0d 0a 2c 0d 0a 20 20 20 20 23 20  XPath..,..    # 
48c0: 54 68 65 20 6e 65 77 20 76 61 6c 75 65 20 74 6f  The new value to
48d0: 20 70 6c 61 63 65 20 69 6e 20 74 68 65 20 78 6d   place in the xm
48e0: 6c 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65  l..    [Paramete
48f0: 72 28 50 6f 73 69 74 69 6f 6e 3d 32 2c 4d 61 6e  r(Position=2,Man
4900: 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c  datory=$true,Val
4910: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
4920: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 5b 56 61  false)]..    [Va
4930: 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45  lidateNotNullOrE
4940: 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20 5b 53 74  mpty()]..    [St
4950: 72 69 6e 67 5d 24 56 61 6c 75 65 0d 0a 2c 0d 0a  ring]$Value..,..
4960: 20 20 20 20 23 20 53 70 65 63 69 66 69 65 73 20      # Specifies 
4970: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 58 4d 4c 20  one or more XML 
4980: 6e 6f 64 65 73 20 74 6f 20 73 65 61 72 63 68 2e  nodes to search.
4990: 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72  ..    [Parameter
49a0: 28 50 6f 73 69 74 69 6f 6e 3d 35 2c 4d 61 6e 64  (Position=5,Mand
49b0: 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c 75  atory=$true,Valu
49c0: 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24 74  eFromPipeline=$t
49d0: 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70  rue,ValueFromPip
49e0: 65 6c 69 6e 65 42 79 50 72 6f 70 65 72 74 79 4e  elineByPropertyN
49f0: 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20  ame=$true)]..   
4a00: 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c   [ValidateNotNul
4a10: 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20  lOrEmpty()]..   
4a20: 20 5b 41 6c 69 61 73 28 22 4e 6f 64 65 22 29 5d   [Alias("Node")]
4a30: 0d 0a 20 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d  ..    [System.Xm
4a40: 6c 2e 58 6d 6c 4e 6f 64 65 5b 5d 5d 24 58 6d 6c  l.XmlNode[]]$Xml
4a50: 0d 0a 2c 20 20 20 0d 0a 20 20 20 20 23 20 53 70  ..,   ..    # Sp
4a60: 65 63 69 66 69 65 73 20 61 20 68 61 73 68 20 74  ecifies a hash t
4a70: 61 62 6c 65 20 6f 66 20 74 68 65 20 6e 61 6d 65  able of the name
4a80: 73 70 61 63 65 73 20 75 73 65 64 20 69 6e 20 74  spaces used in t
4a90: 68 65 20 58 4d 4c 2e 20 55 73 65 20 74 68 65 20  he XML. Use the 
4aa0: 66 6f 72 6d 61 74 20 40 7b 3c 6e 61 6d 65 73 70  format @{<namesp
4ab0: 61 63 65 4e 61 6d 65 3e 20 3d 20 3c 6e 61 6d 65  aceName> = <name
4ac0: 73 70 61 63 65 55 72 69 3e 7d 2e 0d 0a 20 20 20  spaceUri>}...   
4ad0: 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69   [Parameter(Posi
4ae0: 74 69 6f 6e 3d 31 30 2c 4d 61 6e 64 61 74 6f 72  tion=10,Mandator
4af0: 79 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20  y=$false)]..    
4b00: 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c  [ValidateNotNull
4b10: 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20  OrEmpty()]..    
4b20: 5b 41 6c 69 61 73 28 22 4e 73 22 29 5d 0d 0a 20  [Alias("Ns")].. 
4b30: 20 20 20 5b 48 61 73 68 74 61 62 6c 65 5d 24 4e     [Hashtable]$N
4b40: 61 6d 65 73 70 61 63 65 0d 0a 2c 20 20 20 0d 0a  amespace..,   ..
4b50: 20 20 20 20 23 20 4f 75 74 70 75 74 20 74 68 65      # Output the
4b60: 20 58 4d 4c 20 64 6f 63 75 6d 65 6e 74 73 20 61   XML documents a
4b70: 66 74 65 72 20 61 64 64 69 6e 67 20 75 70 64 61  fter adding upda
4b80: 74 69 6e 67 20 74 68 65 6d 0d 0a 20 20 20 20 5b  ting them..    [
4b90: 53 77 69 74 63 68 5d 24 50 61 73 73 74 68 72 75  Switch]$Passthru
4ba0: 0d 0a 29 0d 0a 70 72 6f 63 65 73 73 0d 0a 7b 0d  ..)..process..{.
4bb0: 0a 20 20 20 20 66 6f 72 65 61 63 68 28 24 58 6d  .    foreach($Xm
4bc0: 6c 4e 6f 64 65 20 69 6e 20 24 58 6d 6c 29 20 7b  lNode in $Xml) {
4bd0: 0d 0a 20 20 20 20 20 20 20 20 24 73 65 6c 65 63  ..        $selec
4be0: 74 20 3d 20 40 7b 7d 0d 0a 20 20 20 20 20 20 20  t = @{}..       
4bf0: 20 24 73 65 6c 65 63 74 2e 58 6d 6c 20 3d 20 24   $select.Xml = $
4c00: 58 6d 6c 4e 6f 64 65 0d 0a 20 20 20 20 20 20 20  XmlNode..       
4c10: 20 24 73 65 6c 65 63 74 2e 58 50 61 74 68 20 3d   $select.XPath =
4c20: 20 24 58 50 61 74 68 0d 0a 20 20 20 20 20 20 20   $XPath..       
4c30: 20 69 66 28 24 4e 61 6d 65 73 70 61 63 65 29 20   if($Namespace) 
4c40: 7b 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  {  ..           
4c50: 20 24 73 65 6c 65 63 74 2e 4e 61 6d 65 73 70 61   $select.Namespa
4c60: 63 65 20 3d 20 24 4e 61 6d 65 73 70 61 63 65 0d  ce = $Namespace.
4c70: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
4c80: 20 20 20 20 24 64 6f 63 75 6d 65 6e 74 20 3d 0d      $document =.
4c90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28  .            if(
4ca0: 24 58 6d 6c 4e 6f 64 65 20 2d 69 73 20 5b 53 79  $XmlNode -is [Sy
4cb0: 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 44 6f 63 75  stem.Xml.XmlDocu
4cc0: 6d 65 6e 74 5d 29 20 7b 0d 0a 20 20 20 20 20 20  ment]) {..      
4cd0: 20 20 20 20 20 20 20 20 20 20 24 58 6d 6c 4e 6f            $XmlNo
4ce0: 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  de..            
4cf0: 7d 20 65 6c 73 65 20 7b 20 0d 0a 20 20 20 20 20  } else { ..     
4d00: 20 20 20 20 20 20 20 20 20 20 20 24 58 6d 6c 4e             $XmlN
4d10: 6f 64 65 2e 67 65 74 5f 4f 77 6e 65 72 44 6f 63  ode.get_OwnerDoc
4d20: 75 6d 65 6e 74 28 29 0d 0a 20 20 20 20 20 20 20  ument()..       
4d30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4d40: 69 66 28 24 78 56 61 6c 75 65 20 3d 20 24 56 61  if($xValue = $Va
4d50: 6c 75 65 20 2d 61 73 20 5b 58 6d 6c 5d 29 20 7b  lue -as [Xml]) {
4d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 78  ..            $x
4d70: 56 61 6c 75 65 20 3d 20 24 64 6f 63 75 6d 65 6e  Value = $documen
4d80: 74 2e 49 6d 70 6f 72 74 4e 6f 64 65 28 24 78 56  t.ImportNode($xV
4d90: 61 6c 75 65 2e 53 65 6c 65 63 74 53 69 6e 67 6c  alue.SelectSingl
4da0: 65 4e 6f 64 65 28 22 2f 2a 22 29 2c 20 24 74 72  eNode("/*"), $tr
4db0: 75 65 29 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue)..        }..
4dc0: 20 20 20 20 20 20 20 20 24 6e 6f 64 65 73 20 3d          $nodes =
4dd0: 20 53 65 6c 65 63 74 2d 58 6d 6c 20 40 53 65 6c   Select-Xml @Sel
4de0: 65 63 74 20 7c 20 57 68 65 72 65 2d 4f 62 6a 65  ect | Where-Obje
4df0: 63 74 20 7b 20 24 5f 20 7d 0d 0a 0d 0a 20 20 20  ct { $_ }....   
4e00: 20 20 20 20 20 69 66 28 40 28 24 6e 6f 64 65 73       if(@($nodes
4e10: 29 2e 43 6f 75 6e 74 20 2d 65 71 20 30 29 20 7b  ).Count -eq 0) {
4e20: 20 57 72 69 74 65 2d 57 61 72 6e 69 6e 67 20 22   Write-Warning "
4e30: 4e 6f 20 6e 6f 64 65 73 20 6d 61 74 63 68 65 64  No nodes matched
4e40: 20 79 6f 75 72 20 58 50 61 74 68 2c 20 6e 6f 74   your XPath, not
4e50: 68 69 6e 67 20 77 69 6c 6c 20 62 65 20 75 70 64  hing will be upd
4e60: 61 74 65 64 22 20 7d 0d 0a 20 20 20 20 20 20 20  ated" }..       
4e70: 20 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 65 61   ..        forea
4e80: 63 68 28 24 6e 6f 64 65 20 69 6e 20 24 6e 6f 64  ch($node in $nod
4e90: 65 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  es) {..         
4ea0: 20 20 20 24 73 65 6c 65 63 74 2e 58 50 61 74 68     $select.XPath
4eb0: 20 3d 20 22 24 58 50 61 74 68 2f 70 61 72 65 6e   = "$XPath/paren
4ec0: 74 3a 3a 2a 22 0d 0a 20 20 20 20 20 20 20 20 20  t::*"..         
4ed0: 20 20 20 24 70 61 72 65 6e 74 20 3d 20 53 65 6c     $parent = Sel
4ee0: 65 63 74 2d 58 6d 6c 20 40 53 65 6c 65 63 74 0d  ect-Xml @Select.
4ef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28  .            if(
4f00: 21 24 78 56 61 6c 75 65 29 20 7b 0d 0a 20 20 20  !$xValue) {..   
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28               if(
4f20: 24 6e 6f 64 65 20 2d 69 73 20 5b 53 79 73 74 65  $node -is [Syste
4f30: 6d 2e 58 6d 6c 2e 58 6d 6c 41 74 74 72 69 62 75  m.Xml.XmlAttribu
4f40: 74 65 5d 20 2d 61 6e 64 20 24 56 61 6c 75 65 2e  te] -and $Value.
4f50: 43 6f 6e 74 61 69 6e 73 28 22 3d 22 29 29 20 7b  Contains("=")) {
4f60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f70: 20 20 20 20 20 20 24 61 4e 61 6d 65 2c 20 24 61        $aName, $a
4f80: 56 61 6c 75 65 20 3d 20 24 56 61 6c 75 65 2e 53  Value = $Value.S
4f90: 70 6c 69 74 28 22 3d 22 2c 32 29 0d 0a 20 20 20  plit("=",2)..   
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fb0: 20 69 66 28 24 61 4e 61 6d 65 2e 43 6f 6e 74 61   if($aName.Conta
4fc0: 69 6e 73 28 22 3a 22 29 29 7b 0d 0a 20 20 20 20  ins(":")){..    
4fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fe0: 20 20 20 20 24 6e 73 2c 24 6e 61 6d 65 20 3d 20      $ns,$name = 
4ff0: 24 61 4e 61 6d 65 2e 53 70 6c 69 74 28 22 3a 22  $aName.Split(":"
5000: 2c 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ,2)..           
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 78 56               $xV
5020: 61 6c 75 65 20 3d 20 24 64 6f 63 75 6d 65 6e 74  alue = $document
5030: 2e 43 72 65 61 74 65 41 74 74 72 69 62 75 74 65  .CreateAttribute
5040: 28 20 24 6e 61 6d 65 2c 20 24 4e 61 6d 65 73 70  ( $name, $Namesp
5050: 61 63 65 5b 24 6e 73 5d 20 29 0d 0a 20 20 20 20  ace[$ns] )..    
5060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5070: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 20 20 24 78 56 61 6c 75 65 20 3d 20 24 64 6f 63    $xValue = $doc
50a0: 75 6d 65 6e 74 2e 43 72 65 61 74 65 41 74 74 72  ument.CreateAttr
50b0: 69 62 75 74 65 28 20 24 61 4e 61 6d 65 20 29 0d  ibute( $aName ).
50c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
50d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 24 78 56 61              $xVa
50f0: 6c 75 65 2e 56 61 6c 75 65 20 3d 20 24 61 56 61  lue.Value = $aVa
5100: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
5110: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
5120: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
5130: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20     ..           
5140: 20 73 77 69 74 63 68 28 24 50 53 43 6d 64 6c 65   switch($PSCmdle
5150: 74 2e 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61  t.ParameterSetNa
5160: 6d 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  me) {..         
5170: 20 20 20 20 20 20 20 22 42 65 66 6f 72 65 22 20         "Before" 
5180: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5190: 20 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d 20 24         $null = $
51a0: 70 61 72 65 6e 74 2e 49 6e 73 65 72 74 42 65 66  parent.InsertBef
51b0: 6f 72 65 28 20 24 78 56 61 6c 75 65 2c 20 24 6e  ore( $xValue, $n
51c0: 6f 64 65 20 29 0d 0a 20 20 20 20 20 20 20 20 20  ode )..         
51d0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
51e0: 20 20 20 20 20 20 20 20 20 20 22 41 66 74 65 72            "After
51f0: 22 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " {..           
5200: 20 20 20 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d           $null =
5210: 20 24 70 61 72 65 6e 74 2e 49 6e 73 65 72 74 41   $parent.InsertA
5220: 66 74 65 72 28 20 24 78 56 61 6c 75 65 2c 20 24  fter( $xValue, $
5230: 6e 6f 64 65 20 29 0d 0a 20 20 20 20 20 20 20 20  node )..        
5240: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5250: 20 20 20 20 20 20 20 20 20 20 20 22 41 70 70 65             "Appe
5260: 6e 64 22 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  nd" {..         
5270: 20 20 20 20 20 20 20 20 20 20 20 24 6e 75 6c 6c             $null
5280: 20 3d 20 24 70 61 72 65 6e 74 2e 41 70 70 65 6e   = $parent.Appen
5290: 64 43 68 69 6c 64 28 20 24 78 56 61 6c 75 65 20  dChild( $xValue 
52a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
52b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
52c0: 20 20 20 20 20 20 22 52 65 6d 6f 76 65 22 20 7b        "Remove" {
52d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
52e0: 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d 20 24 70        $null = $p
52f0: 61 72 65 6e 74 2e 52 65 6d 6f 76 65 43 68 69 6c  arent.RemoveChil
5300: 64 28 20 24 6e 6f 64 65 20 29 0d 0a 20 20 20 20  d( $node )..    
5310: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
5330: 52 65 70 6c 61 63 65 22 20 7b 0d 0a 20 20 20 20  Replace" {..    
5340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5350: 69 66 28 21 24 78 56 61 6c 75 65 29 20 7b 0d 0a  if(!$xValue) {..
5360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5370: 20 20 20 20 20 20 20 20 24 78 56 61 6c 75 65 20          $xValue 
5380: 3d 20 24 64 6f 63 75 6d 65 6e 74 2e 43 72 65 61  = $document.Crea
5390: 74 65 54 65 78 74 4e 6f 64 65 28 20 24 56 61 6c  teTextNode( $Val
53a0: 75 65 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue )..          
53b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
53c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
53d0: 20 24 6e 75 6c 6c 20 3d 20 24 70 61 72 65 6e 74   $null = $parent
53e0: 2e 52 65 70 6c 61 63 65 43 68 69 6c 64 28 20 24  .ReplaceChild( $
53f0: 78 56 61 6c 75 65 2c 20 24 6e 6f 64 65 20 29 0d  xValue, $node ).
5400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5410: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5420: 20 20 20 20 22 53 65 74 22 20 7b 0d 0a 20 20 20      "Set" {..   
5430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5440: 20 69 66 28 21 24 78 56 61 6c 75 65 20 2d 61 6e   if(!$xValue -an
5450: 64 20 24 6e 6f 64 65 2e 22 23 74 65 78 74 22 29  d $node."#text")
5460: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5470: 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 6f 64              $nod
5480: 65 2e 22 23 74 65 78 74 22 20 3d 20 24 56 61 6c  e."#text" = $Val
5490: 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
54a0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
54b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
54c0: 20 20 20 20 20 20 20 20 20 20 69 66 28 24 6e 6f            if($no
54d0: 64 65 20 2d 69 73 20 5b 53 79 73 74 65 6d 2e 58  de -is [System.X
54e0: 6d 6c 2e 58 6d 6c 45 6c 65 6d 65 6e 74 5d 29 20  ml.XmlElement]) 
54f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5510: 66 28 21 24 78 56 61 6c 75 65 29 20 7b 0d 0a 20  f(!$xValue) {.. 
5520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
5540: 78 56 61 6c 75 65 20 3d 20 24 64 6f 63 75 6d 65  xValue = $docume
5550: 6e 74 2e 43 72 65 61 74 65 54 65 78 74 4e 6f 64  nt.CreateTextNod
5560: 65 28 20 24 56 61 6c 75 65 20 29 0d 0a 20 20 20  e( $Value )..   
5570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5580: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55a0: 20 20 20 20 20 20 20 20 24 6e 75 6c 6c 20 3d 20          $null = 
55b0: 24 6e 6f 64 65 2e 73 65 74 5f 69 6e 6e 65 72 58  $node.set_innerX
55c0: 6d 6c 28 22 22 29 0d 0a 20 20 20 20 20 20 20 20  ml("")..        
55d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55e0: 20 20 20 20 24 6e 75 6c 6c 20 3d 20 24 6e 6f 64      $null = $nod
55f0: 65 2e 41 70 70 65 6e 64 43 68 69 6c 64 28 24 78  e.AppendChild($x
5600: 56 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  Value)..        
5610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5620: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
5630: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 69             elsei
5640: 66 28 24 6e 6f 64 65 20 2d 69 73 20 5b 53 79 73  f($node -is [Sys
5650: 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 41 74 74 72 69  tem.Xml.XmlAttri
5660: 62 75 74 65 5d 29 20 7b 0d 0a 20 20 20 20 20 20  bute]) {..      
5670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5680: 20 20 20 20 20 20 24 6e 6f 64 65 2e 56 61 6c 75        $node.Valu
5690: 65 20 3d 20 24 56 61 6c 75 65 0d 0a 20 20 20 20  e = $Value..    
56a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56b0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56d0: 20 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d            Write-
56e0: 57 61 72 6e 69 6e 67 20 22 24 58 50 61 74 68 20  Warning "$XPath 
56f0: 73 65 6c 65 63 74 73 20 61 20 6e 6f 64 65 20 6f  selects a node o
5700: 66 20 74 79 70 65 20 24 28 24 6e 6f 64 65 2e 47  f type $($node.G
5710: 65 74 54 79 70 65 28 29 29 2c 20 77 68 69 63 68  etType()), which
5720: 20 77 65 20 68 61 76 65 6e 27 74 20 68 61 6e 64   we haven't hand
5730: 6c 65 64 2e 20 50 6c 65 61 73 65 20 61 64 64 20  led. Please add 
5740: 74 68 61 74 20 68 61 6e 64 6c 65 72 21 22 0d 0a  that handler!"..
5750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5760: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
5770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
5780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5790: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
57a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
57b0: 20 20 20 20 20 20 20 69 66 28 24 50 61 73 73 74         if($Passt
57c0: 68 72 75 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  hru) {..        
57d0: 20 20 20 20 57 72 69 74 65 2d 4f 75 74 70 75 74      Write-Output
57e0: 20 24 58 6d 6c 4e 6f 64 65 0d 0a 20 20 20 20 20   $XmlNode..     
57f0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 7d 0d     }..    }..}}.
5800: 0a 53 65 74 2d 41 6c 69 61 73 20 75 78 6d 6c 20  .Set-Alias uxml 
5810: 55 70 64 61 74 65 2d 58 6d 6c 20 2d 45 41 20 30  Update-Xml -EA 0
5820: 0d 0a 53 65 74 2d 41 6c 69 61 73 20 75 78 20 55  ..Set-Alias ux U
5830: 70 64 61 74 65 2d 58 6d 6c 20 2d 45 41 20 30 0d  pdate-Xml -EA 0.
5840: 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 43 6f 6e 76  ...function Conv
5850: 65 72 74 2d 4e 6f 64 65 20 7b 0d 0a 23 2e 53 79  ert-Node {..#.Sy
5860: 6e 6f 70 73 69 73 20 0d 0a 23 20 43 6f 6e 76 65  nopsis ..# Conve
5870: 72 74 20 61 20 73 69 6e 67 6c 65 20 58 4d 4c 20  rt a single XML 
5880: 4e 6f 64 65 20 76 69 61 20 58 53 4c 20 73 74 79  Node via XSL sty
5890: 6c 65 73 68 65 65 74 73 0d 0a 5b 43 6d 64 6c 65  lesheets..[Cmdle
58a0: 74 42 69 6e 64 69 6e 67 28 44 65 66 61 75 6c 74  tBinding(Default
58b0: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
58c0: 3d 22 52 65 61 64 65 72 22 29 5d 0d 0a 70 61 72  ="Reader")]..par
58d0: 61 6d 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74  am(..   [Paramet
58e0: 65 72 28 50 61 72 61 6d 65 74 65 72 53 65 74 4e  er(ParameterSetN
58f0: 61 6d 65 3d 22 42 79 4e 6f 64 65 22 2c 4d 61 6e  ame="ByNode",Man
5900: 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c  datory=$true,Val
5910: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
5920: 74 72 75 65 29 5d 0d 0a 20 20 20 5b 53 79 73 74  true)]..   [Syst
5930: 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 5d 24  em.Xml.XmlNode]$
5940: 4e 6f 64 65 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72  Node..,..   [Par
5950: 61 6d 65 74 65 72 28 50 61 72 61 6d 65 74 65 72  ameter(Parameter
5960: 53 65 74 4e 61 6d 65 3d 22 52 65 61 64 65 72 22  SetName="Reader"
5970: 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65  ,Mandatory=$true
5980: 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  ,ValueFromPipeli
5990: 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b  ne=$true)]..   [
59a0: 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65  System.Xml.XmlRe
59b0: 61 64 65 72 5d 24 58 6d 6c 52 65 61 64 65 72 0d  ader]$XmlReader.
59c0: 0a 2c 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .,..   [Paramete
59d0: 72 28 50 6f 73 69 74 69 6f 6e 3d 31 2c 4d 61 6e  r(Position=1,Man
59e0: 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61 6c  datory=$true,Val
59f0: 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d 24  ueFromPipeline=$
5a00: 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 53 79 73  false)]..   [Sys
5a10: 74 65 6d 2e 58 6d 6c 2e 58 73 6c 2e 58 73 6c 43  tem.Xml.Xsl.XslC
5a20: 6f 6d 70 69 6c 65 64 54 72 61 6e 73 66 6f 72 6d  ompiledTransform
5a30: 5d 24 53 74 79 6c 65 53 68 65 65 74 0d 0a 2c 0d  ]$StyleSheet..,.
5a40: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
5a50: 6f 73 69 74 69 6f 6e 3d 32 2c 4d 61 6e 64 61 74  osition=2,Mandat
5a60: 6f 72 79 3d 24 66 61 6c 73 65 29 5d 0d 0a 20 20  ory=$false)]..  
5a70: 20 5b 41 6c 69 61 73 28 22 50 61 72 61 6d 65 74   [Alias("Paramet
5a80: 65 72 73 22 29 5d 0d 0a 20 20 20 5b 68 61 73 68  ers")]..   [hash
5a90: 74 61 62 6c 65 5d 24 41 72 67 75 6d 65 6e 74 73  table]$Arguments
5aa0: 0d 0a 29 0d 0a 50 52 4f 43 45 53 53 20 7b 0d 0a  ..)..PROCESS {..
5ab0: 20 20 20 69 66 28 24 50 53 43 6d 64 6c 65 74 2e     if($PSCmdlet.
5ac0: 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d 65  ParameterSetName
5ad0: 20 2d 65 71 20 22 42 79 4e 6f 64 65 22 29 20 7b   -eq "ByNode") {
5ae0: 0d 0a 20 20 20 20 20 20 24 58 6d 6c 52 65 61 64  ..      $XmlRead
5af0: 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20  er = New-Object 
5b00: 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 52 65 61 64 65  Xml.XmlNodeReade
5b10: 72 20 24 6e 6f 64 65 0d 0a 20 20 20 7d 0d 0a 0d  r $node..   }...
5b20: 0a 20 20 20 24 6f 75 74 70 75 74 20 3d 20 4e 65  .   $output = Ne
5b30: 77 2d 4f 62 6a 65 63 74 20 49 4f 2e 53 74 72 69  w-Object IO.Stri
5b40: 6e 67 57 72 69 74 65 72 0d 0a 20 20 20 24 61 72  ngWriter..   $ar
5b50: 67 4c 69 73 74 20 3d 20 24 6e 75 6c 6c 0d 0a 20  gList = $null.. 
5b60: 20 20 0d 0a 20 20 20 69 66 28 24 41 72 67 75 6d    ..   if($Argum
5b70: 65 6e 74 73 29 20 7b 0d 0a 20 20 20 20 20 20 24  ents) {..      $
5b80: 61 72 67 4c 69 73 74 20 3d 20 4e 65 77 2d 4f 62  argList = New-Ob
5b90: 6a 65 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e  ject System.Xml.
5ba0: 58 73 6c 2e 58 73 6c 74 41 72 67 75 6d 65 6e 74  Xsl.XsltArgument
5bb0: 4c 69 73 74 0d 0a 20 20 20 20 20 20 66 6f 72 65  List..      fore
5bc0: 61 63 68 28 24 61 72 67 20 69 6e 20 24 41 72 67  ach($arg in $Arg
5bd0: 75 6d 65 6e 74 73 2e 47 65 74 45 6e 75 6d 65 72  uments.GetEnumer
5be0: 61 74 6f 72 28 29 29 20 7b 0d 0a 20 20 20 20 20  ator()) {..     
5bf0: 20 20 20 20 24 6e 61 6d 65 73 70 61 63 65 2c 20      $namespace, 
5c00: 24 6e 61 6d 65 20 3d 20 24 61 72 67 2e 4b 65 79  $name = $arg.Key
5c10: 20 2d 73 70 6c 69 74 20 22 3a 22 0d 0a 20 20 20   -split ":"..   
5c20: 20 20 20 20 20 20 23 23 20 46 69 78 20 6e 61 6d        ## Fix nam
5c30: 65 73 70 61 63 65 0d 0a 20 20 20 20 20 20 20 20  espace..        
5c40: 20 69 66 28 21 24 6e 61 6d 65 29 20 7b 20 0d 0a   if(!$name) { ..
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 61 6d              $nam
5c60: 65 20 3d 20 24 4e 61 6d 65 73 70 61 63 65 0d 0a  e = $Namespace..
5c70: 20 20 20 20 20 20 20 20 20 20 20 20 24 6e 61 6d              $nam
5c80: 65 73 70 61 63 65 20 3d 20 22 22 0d 0a 20 20 20  espace = ""..   
5c90: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
5ca0: 20 20 0d 0a 20 20 20 20 20 20 20 20 20 57 72 69    ..         Wri
5cb0: 74 65 2d 56 65 72 62 6f 73 65 20 22 6e 73 3a 24  te-Verbose "ns:$
5cc0: 6e 61 6d 65 73 70 61 63 65 20 6e 61 6d 65 3a 24  namespace name:$
5cd0: 6e 61 6d 65 20 76 61 6c 75 65 3a 24 28 24 61 72  name value:$($ar
5ce0: 67 2e 56 61 6c 75 65 29 22 0d 0a 20 20 20 20 20  g.Value)"..     
5cf0: 20 20 20 20 24 61 72 67 4c 69 73 74 2e 41 64 64      $argList.Add
5d00: 50 61 72 61 6d 28 24 6e 61 6d 65 2c 22 24 6e 61  Param($name,"$na
5d10: 6d 65 73 70 61 63 65 22 2c 24 61 72 67 2e 56 61  mespace",$arg.Va
5d20: 6c 75 65 29 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  lue)..      }.. 
5d30: 20 20 7d 0d 0a 20 20 20 0d 0a 20 20 20 24 53 74    }..   ..   $St
5d40: 79 6c 65 53 68 65 65 74 2e 54 72 61 6e 73 66 6f  yleSheet.Transfo
5d50: 72 6d 28 20 24 58 6d 6c 52 65 61 64 65 72 2c 20  rm( $XmlReader, 
5d60: 24 61 72 67 4c 69 73 74 2c 20 24 6f 75 74 70 75  $argList, $outpu
5d70: 74 20 29 0d 0a 20 20 20 57 72 69 74 65 2d 4f 75  t )..   Write-Ou
5d80: 74 70 75 74 20 24 6f 75 74 70 75 74 2e 54 6f 53  tput $output.ToS
5d90: 74 72 69 6e 67 28 29 0d 0a 7d 0d 0a 7d 0d 0a 0d  tring()..}..}...
5da0: 0a 66 75 6e 63 74 69 6f 6e 20 43 6f 6e 76 65 72  .function Conver
5db0: 74 2d 58 6d 6c 20 7b 0d 0a 23 2e 53 79 6e 6f 70  t-Xml {..#.Synop
5dc0: 73 69 73 0d 0a 23 20 20 20 54 68 65 20 43 6f 6e  sis..#   The Con
5dd0: 76 65 72 74 2d 58 4d 4c 20 66 75 6e 63 74 69 6f  vert-XML functio
5de0: 6e 20 6c 65 74 73 20 79 6f 75 20 75 73 65 20 58  n lets you use X
5df0: 73 6c 74 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d  slt to transform
5e00: 20 58 4d 4c 20 73 74 72 69 6e 67 73 20 61 6e 64   XML strings and
5e10: 20 64 6f 63 75 6d 65 6e 74 73 2e 0d 0a 23 2e 44   documents...#.D
5e20: 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20 20 20  escription..#   
5e30: 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 54 4f  Documentation TO
5e40: 44 4f 0d 0a 5b 43 6d 64 6c 65 74 42 69 6e 64 69  DO..[CmdletBindi
5e50: 6e 67 28 44 65 66 61 75 6c 74 50 61 72 61 6d 65  ng(DefaultParame
5e60: 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22  terSetName="Xml"
5e70: 29 5d 0d 0a 70 61 72 61 6d 28 0d 0a 20 20 20 20  )]..param(..    
5e80: 23 20 53 70 65 63 69 66 69 65 73 20 6f 6e 65 20  # Specifies one 
5e90: 6f 72 20 6d 6f 72 65 20 58 4d 4c 20 6e 6f 64 65  or more XML node
5ea0: 73 20 74 6f 20 70 72 6f 63 65 73 73 2e 0d 0a 20  s to process... 
5eb0: 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f     [Parameter(Po
5ec0: 73 69 74 69 6f 6e 3d 31 2c 50 61 72 61 6d 65 74  sition=1,Paramet
5ed0: 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22 2c  erSetName="Xml",
5ee0: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c  Mandatory=$true,
5ef0: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
5f00: 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f  e=$true,ValueFro
5f10: 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65  mPipelineByPrope
5f20: 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d  rtyName=$true)].
5f30: 0a 20 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  .    [ValidateNo
5f40: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
5f50: 0a 20 20 20 20 5b 41 6c 69 61 73 28 22 4e 6f 64  .    [Alias("Nod
5f60: 65 22 29 5d 0d 0a 20 20 20 20 5b 53 79 73 74 65  e")]..    [Syste
5f70: 6d 2e 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 5b 5d 5d  m.Xml.XmlNode[]]
5f80: 24 58 6d 6c 0d 0a 2c 20 20 20 0d 0a 20 20 20 20  $Xml..,   ..    
5f90: 23 20 53 70 65 63 69 66 69 65 73 20 61 6e 20 58  # Specifies an X
5fa0: 6d 6c 20 53 74 79 6c 65 53 68 65 65 74 20 74 6f  ml StyleSheet to
5fb0: 20 74 72 61 6e 73 66 6f 72 6d 20 77 69 74 68 2e   transform with.
5fc0: 2e 2e 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74  ....    [Paramet
5fd0: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30 2c 4d 61  er(Position=0,Ma
5fe0: 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56 61  ndatory=$true,Va
5ff0: 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65 3d  lueFromPipeline=
6000: 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 20 5b 56  $false)]..    [V
6010: 61 6c 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72  alidateNotNullOr
6020: 45 6d 70 74 79 28 29 5d 0d 0a 20 20 20 20 5b 41  Empty()]..    [A
6030: 6c 69 61 73 28 22 53 74 79 6c 65 53 68 65 65 74  lias("StyleSheet
6040: 22 29 5d 0d 0a 20 20 20 20 5b 53 74 72 69 6e 67  ")]..    [String
6050: 5d 24 58 73 6c 74 0d 0a 2c 0d 0a 20 20 20 20 23  ]$Xslt..,..    #
6060: 20 53 70 65 63 69 66 79 20 61 72 67 75 6d 65 6e   Specify argumen
6070: 74 73 20 74 6f 20 74 68 65 20 58 53 4c 20 54 72  ts to the XSL Tr
6080: 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 0d 0a 20 20  ansformation..  
6090: 20 20 5b 41 6c 69 61 73 28 22 50 61 72 61 6d 65    [Alias("Parame
60a0: 74 65 72 73 22 29 5d 0d 0a 20 20 20 20 5b 68 61  ters")]..    [ha
60b0: 73 68 74 61 62 6c 65 5d 24 41 72 67 75 6d 65 6e  shtable]$Argumen
60c0: 74 73 0d 0a 29 0d 0a 62 65 67 69 6e 20 7b 20 0d  ts..)..begin { .
60d0: 0a 20 20 20 24 53 74 79 6c 65 53 68 65 65 74 20  .   $StyleSheet 
60e0: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73  = New-Object Sys
60f0: 74 65 6d 2e 58 6d 6c 2e 58 73 6c 2e 58 73 6c 43  tem.Xml.Xsl.XslC
6100: 6f 6d 70 69 6c 65 64 54 72 61 6e 73 66 6f 72 6d  ompiledTransform
6110: 0d 0a 20 20 20 69 66 28 54 65 73 74 2d 50 61 74  ..   if(Test-Pat
6120: 68 20 24 58 73 6c 74 20 2d 45 41 20 30 29 20 7b  h $Xslt -EA 0) {
6130: 20 0d 0a 20 20 20 20 20 20 57 72 69 74 65 2d 56   ..      Write-V
6140: 65 72 62 6f 73 65 20 22 4c 6f 61 64 69 6e 67 20  erbose "Loading 
6150: 53 74 79 6c 65 73 68 65 65 74 20 66 72 6f 6d 20  Stylesheet from 
6160: 24 28 52 65 73 6f 6c 76 65 2d 50 61 74 68 20 24  $(Resolve-Path $
6170: 58 73 6c 74 29 22 0d 0a 20 20 20 20 20 20 24 53  Xslt)"..      $S
6180: 74 79 6c 65 53 68 65 65 74 2e 4c 6f 61 64 28 20  tyleSheet.Load( 
6190: 28 52 65 73 6f 6c 76 65 2d 50 61 74 68 20 24 58  (Resolve-Path $X
61a0: 73 6c 74 29 20 29 0d 0a 20 20 20 7d 20 65 6c 73  slt) )..   } els
61b0: 65 20 7b 0d 0a 20 20 20 20 20 20 24 4f 46 53 20  e {..      $OFS 
61c0: 3d 20 22 60 6e 22 0d 0a 20 20 20 20 20 20 57 72  = "`n"..      Wr
61d0: 69 74 65 2d 56 65 72 62 6f 73 65 20 22 24 58 73  ite-Verbose "$Xs
61e0: 6c 74 22 0d 0a 20 20 20 20 20 20 24 53 74 79 6c  lt"..      $Styl
61f0: 65 53 68 65 65 74 2e 4c 6f 61 64 28 28 5b 53 79  eSheet.Load(([Sy
6200: 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65 61 64  stem.Xml.XmlRead
6210: 65 72 5d 3a 3a 43 72 65 61 74 65 28 28 4e 65 77  er]::Create((New
6220: 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 49  -Object System.I
6230: 4f 2e 53 74 72 69 6e 67 52 65 61 64 65 72 20 24  O.StringReader $
6240: 58 73 6c 74 29 29 29 29 0d 0a 20 20 20 7d 0d 0a  Xslt))))..   }..
6250: 7d 0d 0a 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20  }..process {..  
6260: 20 66 6f 72 65 61 63 68 28 24 6e 6f 64 65 20 69   foreach($node i
6270: 6e 20 24 58 6d 6c 29 20 7b 0d 0a 20 20 20 20 20  n $Xml) {..     
6280: 20 43 6f 6e 76 65 72 74 2d 4e 6f 64 65 20 2d 58   Convert-Node -X
6290: 6d 6c 20 28 4e 65 77 2d 4f 62 6a 65 63 74 20 58  ml (New-Object X
62a0: 6d 6c 2e 58 6d 6c 4e 6f 64 65 52 65 61 64 65 72  ml.XmlNodeReader
62b0: 20 24 6e 6f 64 65 29 20 24 53 74 79 6c 65 53 68   $node) $StyleSh
62c0: 65 65 74 20 24 41 72 67 75 6d 65 6e 74 73 0d 0a  eet $Arguments..
62d0: 20 20 20 7d 0d 0a 7d 0d 0a 7d 0d 0a 53 65 74 2d     }..}..}..Set-
62e0: 41 6c 69 61 73 20 63 76 78 6d 6c 20 43 6f 6e 76  Alias cvxml Conv
62f0: 65 72 74 2d 58 6d 6c 20 2d 45 41 20 30 0d 0a 0d  ert-Xml -EA 0...
6300: 0a 66 75 6e 63 74 69 6f 6e 20 52 65 6d 6f 76 65  .function Remove
6310: 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 7b 0d  -XmlNamespace {.
6320: 0a 23 2e 53 79 6e 6f 70 73 69 73 0d 0a 23 20 20  .#.Synopsis..#  
6330: 52 65 6d 6f 76 65 73 20 6e 61 6d 65 73 70 61 63  Removes namespac
6340: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  e definitions an
6350: 64 20 70 72 65 66 69 78 65 73 20 66 72 6f 6d 20  d prefixes from 
6360: 78 6d 6c 20 64 6f 63 75 6d 65 6e 74 73 0d 0a 23  xml documents..#
6370: 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20  .Description..# 
6380: 20 52 75 6e 73 20 61 6e 20 78 6d 6c 20 64 6f 63   Runs an xml doc
6390: 75 6d 65 6e 74 20 74 68 72 6f 75 67 68 20 61 6e  ument through an
63a0: 20 58 53 4c 20 54 72 61 6e 73 66 6f 72 6d 61 74   XSL Transformat
63b0: 69 6f 6e 20 74 6f 20 72 65 6d 6f 76 65 20 6e 61  ion to remove na
63c0: 6d 65 73 70 61 63 65 73 20 66 72 6f 6d 20 69 74  mespaces from it
63d0: 20 69 66 20 74 68 65 79 20 65 78 69 73 74 2e 0d   if they exist..
63e0: 0a 23 20 20 45 6e 74 69 74 69 65 73 20 61 72 65  .#  Entities are
63f0: 20 61 6c 73 6f 20 6e 61 74 75 72 61 6c 6c 79 20   also naturally 
6400: 65 78 70 61 6e 64 65 64 0d 0a 23 2e 50 61 72 61  expanded..#.Para
6410: 6d 65 74 65 72 20 43 6f 6e 74 65 6e 74 0d 0a 23  meter Content..#
6420: 20 20 53 70 65 63 69 66 69 65 73 20 61 20 73 74    Specifies a st
6430: 72 69 6e 67 20 74 68 61 74 20 63 6f 6e 74 61 69  ring that contai
6440: 6e 73 20 74 68 65 20 58 4d 4c 20 74 6f 20 74 72  ns the XML to tr
6450: 61 6e 73 66 6f 72 6d 2e 0d 0a 23 2e 50 61 72 61  ansform...#.Para
6460: 6d 65 74 65 72 20 50 61 74 68 0d 0a 23 20 20 53  meter Path..#  S
6470: 70 65 63 69 66 69 65 73 20 74 68 65 20 70 61 74  pecifies the pat
6480: 68 20 61 6e 64 20 66 69 6c 65 20 6e 61 6d 65 73  h and file names
6490: 20 6f 66 20 74 68 65 20 58 4d 4c 20 66 69 6c 65   of the XML file
64a0: 73 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d 2e 20  s to transform. 
64b0: 57 69 6c 64 63 61 72 64 73 20 61 72 65 20 70 65  Wildcards are pe
64c0: 72 6d 69 74 74 65 64 2e 0d 0a 23 0d 0a 23 20 20  rmitted...#..#  
64d0: 54 68 65 72 65 20 77 69 6c 6c 20 62 65 20 6f 6e  There will be on
64e0: 65 20 6f 75 74 70 75 74 20 64 6f 63 75 6d 65 6e  e output documen
64f0: 74 20 66 6f 72 20 65 61 63 68 20 6d 61 74 63 68  t for each match
6500: 69 6e 67 20 69 6e 70 75 74 20 66 69 6c 65 2e 0d  ing input file..
6510: 0a 23 2e 50 61 72 61 6d 65 74 65 72 20 58 6d 6c  .#.Parameter Xml
6520: 0d 0a 23 20 20 53 70 65 63 69 66 69 65 73 20 6f  ..#  Specifies o
6530: 6e 65 20 6f 72 20 6d 6f 72 65 20 58 4d 4c 20 64  ne or more XML d
6540: 6f 63 75 6d 65 6e 74 73 20 74 6f 20 74 72 61 6e  ocuments to tran
6550: 73 66 6f 72 6d 0d 0a 5b 43 6d 64 6c 65 74 42 69  sform..[CmdletBi
6560: 6e 64 69 6e 67 28 44 65 66 61 75 6c 74 50 61 72  nding(DefaultPar
6570: 61 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 58  ameterSetName="X
6580: 6d 6c 22 29 5d 0d 0a 50 41 52 41 4d 28 0d 0a 20  ml")]..PARAM(.. 
6590: 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73    [Parameter(Pos
65a0: 69 74 69 6f 6e 3d 31 2c 50 61 72 61 6d 65 74 65  ition=1,Paramete
65b0: 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22 2c 4d  rSetName="Xml",M
65c0: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c 56  andatory=$true,V
65d0: 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e 65  alueFromPipeline
65e0: 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f 6d  =$true,ValueFrom
65f0: 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70 65 72  PipelineByProper
6600: 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d 0d 0a  tyName=$true)]..
6610: 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e     [ValidateNotN
6620: 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20  ullOrEmpty()].. 
6630: 20 20 5b 41 6c 69 61 73 28 22 4e 6f 64 65 22 29    [Alias("Node")
6640: 5d 0d 0a 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d  ]..   [System.Xm
6650: 6c 2e 58 6d 6c 4e 6f 64 65 5b 5d 5d 24 58 6d 6c  l.XmlNode[]]$Xml
6660: 0d 0a 29 0d 0a 42 45 47 49 4e 20 7b 20 0d 0a 20  ..)..BEGIN { .. 
6670: 20 20 24 53 74 79 6c 65 53 68 65 65 74 20 3d 20    $StyleSheet = 
6680: 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65  New-Object Syste
6690: 6d 2e 58 6d 6c 2e 58 73 6c 2e 58 73 6c 43 6f 6d  m.Xml.Xsl.XslCom
66a0: 70 69 6c 65 64 54 72 61 6e 73 66 6f 72 6d 0d 0a  piledTransform..
66b0: 20 20 20 24 53 74 79 6c 65 53 68 65 65 74 2e 4c     $StyleSheet.L
66c0: 6f 61 64 28 28 5b 53 79 73 74 65 6d 2e 58 6d 6c  oad(([System.Xml
66d0: 2e 58 6d 6c 52 65 61 64 65 72 5d 3a 3a 43 72 65  .XmlReader]::Cre
66e0: 61 74 65 28 28 4e 65 77 2d 4f 62 6a 65 63 74 20  ate((New-Object 
66f0: 53 79 73 74 65 6d 2e 49 4f 2e 53 74 72 69 6e 67  System.IO.String
6700: 52 65 61 64 65 72 20 40 22 0d 0a 3c 78 73 6c 3a  Reader @"..<xsl:
6710: 73 74 79 6c 65 73 68 65 65 74 20 76 65 72 73 69  stylesheet versi
6720: 6f 6e 3d 22 31 2e 30 22 20 78 6d 6c 6e 73 3a 78  on="1.0" xmlns:x
6730: 73 6c 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77  sl="http://www.w
6740: 33 2e 6f 72 67 2f 31 39 39 39 2f 58 53 4c 2f 54  3.org/1999/XSL/T
6750: 72 61 6e 73 66 6f 72 6d 22 3e 0d 0a 20 20 20 3c  ransform">..   <
6760: 78 73 6c 3a 6f 75 74 70 75 74 20 6d 65 74 68 6f  xsl:output metho
6770: 64 3d 22 78 6d 6c 22 20 69 6e 64 65 6e 74 3d 22  d="xml" indent="
6780: 79 65 73 22 2f 3e 0d 0a 20 20 20 3c 78 73 6c 3a  yes"/>..   <xsl:
6790: 74 65 6d 70 6c 61 74 65 20 6d 61 74 63 68 3d 22  template match="
67a0: 2f 7c 63 6f 6d 6d 65 6e 74 28 29 7c 70 72 6f 63  /|comment()|proc
67b0: 65 73 73 69 6e 67 2d 69 6e 73 74 72 75 63 74 69  essing-instructi
67c0: 6f 6e 28 29 22 3e 0d 0a 20 20 20 20 20 20 3c 78  on()">..      <x
67d0: 73 6c 3a 63 6f 70 79 3e 0d 0a 20 20 20 20 20 20  sl:copy>..      
67e0: 20 20 20 3c 78 73 6c 3a 61 70 70 6c 79 2d 74 65     <xsl:apply-te
67f0: 6d 70 6c 61 74 65 73 2f 3e 0d 0a 20 20 20 20 20  mplates/>..     
6800: 20 3c 2f 78 73 6c 3a 63 6f 70 79 3e 0d 0a 20 20   </xsl:copy>..  
6810: 20 3c 2f 78 73 6c 3a 74 65 6d 70 6c 61 74 65 3e   </xsl:template>
6820: 0d 0a 0d 0a 20 20 20 3c 78 73 6c 3a 74 65 6d 70  ....   <xsl:temp
6830: 6c 61 74 65 20 6d 61 74 63 68 3d 22 2a 22 3e 0d  late match="*">.
6840: 0a 20 20 20 20 20 20 3c 78 73 6c 3a 65 6c 65 6d  .      <xsl:elem
6850: 65 6e 74 20 6e 61 6d 65 3d 22 7b 6c 6f 63 61 6c  ent name="{local
6860: 2d 6e 61 6d 65 28 29 7d 22 3e 0d 0a 20 20 20 20  -name()}">..    
6870: 20 20 20 20 20 3c 78 73 6c 3a 61 70 70 6c 79 2d       <xsl:apply-
6880: 74 65 6d 70 6c 61 74 65 73 20 73 65 6c 65 63 74  templates select
6890: 3d 22 40 2a 7c 6e 6f 64 65 28 29 22 2f 3e 0d 0a  ="@*|node()"/>..
68a0: 20 20 20 20 20 20 3c 2f 78 73 6c 3a 65 6c 65 6d        </xsl:elem
68b0: 65 6e 74 3e 0d 0a 20 20 20 3c 2f 78 73 6c 3a 74  ent>..   </xsl:t
68c0: 65 6d 70 6c 61 74 65 3e 0d 0a 0d 0a 20 20 20 3c  emplate>....   <
68d0: 78 73 6c 3a 74 65 6d 70 6c 61 74 65 20 6d 61 74  xsl:template mat
68e0: 63 68 3d 22 40 2a 22 3e 0d 0a 20 20 20 20 20 20  ch="@*">..      
68f0: 3c 78 73 6c 3a 61 74 74 72 69 62 75 74 65 20 6e  <xsl:attribute n
6900: 61 6d 65 3d 22 7b 6c 6f 63 61 6c 2d 6e 61 6d 65  ame="{local-name
6910: 28 29 7d 22 3e 0d 0a 20 20 20 20 20 20 20 20 20  ()}">..         
6920: 3c 78 73 6c 3a 76 61 6c 75 65 2d 6f 66 20 73 65  <xsl:value-of se
6930: 6c 65 63 74 3d 22 2e 22 2f 3e 0d 0a 20 20 20 20  lect="."/>..    
6940: 20 20 3c 2f 78 73 6c 3a 61 74 74 72 69 62 75 74    </xsl:attribut
6950: 65 3e 0d 0a 20 20 20 3c 2f 78 73 6c 3a 74 65 6d  e>..   </xsl:tem
6960: 70 6c 61 74 65 3e 0d 0a 3c 2f 78 73 6c 3a 73 74  plate>..</xsl:st
6970: 79 6c 65 73 68 65 65 74 3e 0d 0a 22 40 29 29 29  ylesheet>.."@)))
6980: 29 0d 0a 20 20 20 5b 54 65 78 74 2e 53 74 72 69  )..   [Text.Stri
6990: 6e 67 42 75 69 6c 64 65 72 5d 24 58 6d 6c 43 6f  ngBuilder]$XmlCo
69a0: 6e 74 65 6e 74 20 3d 20 5b 53 74 72 69 6e 67 5d  ntent = [String]
69b0: 3a 3a 45 6d 70 74 79 20 0d 0a 7d 0d 0a 50 52 4f  ::Empty ..}..PRO
69c0: 43 45 53 53 20 7b 0d 0a 20 20 20 24 58 6d 6c 20  CESS {..   $Xml 
69d0: 7c 20 43 6f 6e 76 65 72 74 2d 4e 6f 64 65 20 24  | Convert-Node $
69e0: 53 74 79 6c 65 53 68 65 65 74 0d 0a 7d 0d 0a 7d  StyleSheet..}..}
69f0: 0d 0a 53 65 74 2d 41 6c 69 61 73 20 72 6d 6e 73  ..Set-Alias rmns
6a00: 20 52 65 6d 6f 76 65 2d 58 6d 6c 4e 61 6d 65 73   Remove-XmlNames
6a10: 70 61 63 65 20 2d 45 41 20 30 0d 0a 53 65 74 2d  pace -EA 0..Set-
6a20: 41 6c 69 61 73 20 72 6d 78 6e 73 20 52 65 6d 6f  Alias rmxns Remo
6a30: 76 65 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20  ve-XmlNamespace 
6a40: 2d 45 41 20 30 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d  -EA 0...........
6a50: 0a 66 75 6e 63 74 69 6f 6e 20 52 65 6d 6f 76 65  .function Remove
6a60: 2d 58 6d 6c 45 6c 65 6d 65 6e 74 20 7b 0d 0a 23  -XmlElement {..#
6a70: 2e 53 79 6e 6f 70 73 69 73 0d 0a 23 20 20 52 65  .Synopsis..#  Re
6a80: 6d 6f 76 65 73 20 73 70 65 63 69 66 69 65 64 20  moves specified 
6a90: 65 6c 65 6d 65 6e 74 73 20 28 74 61 67 73 20 6f  elements (tags o
6aa0: 72 20 61 74 74 72 69 62 75 74 65 73 29 20 6f 72  r attributes) or
6ab0: 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 66 72   all elements fr
6ac0: 6f 6d 20 61 20 73 70 65 63 69 66 69 65 64 20 6e  om a specified n
6ad0: 61 6d 65 73 70 61 63 65 20 66 72 6f 6d 20 61 6e  amespace from an
6ae0: 20 58 6d 6c 20 64 6f 63 75 6d 65 6e 74 0d 0a 23   Xml document..#
6af0: 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20  .Description..# 
6b00: 20 52 75 6e 73 20 61 6e 20 78 6d 6c 20 64 6f 63   Runs an xml doc
6b10: 75 6d 65 6e 74 20 74 68 72 6f 75 67 68 20 61 6e  ument through an
6b20: 20 58 53 4c 20 54 72 61 6e 73 66 6f 72 6d 61 74   XSL Transformat
6b30: 69 6f 6e 20 74 6f 20 72 65 6d 6f 76 65 20 74 61  ion to remove ta
6b40: 67 20 6e 61 6d 65 73 70 61 63 65 73 20 66 72 6f  g namespaces fro
6b50: 6d 20 69 74 20 69 66 20 74 68 65 79 20 65 78 69  m it if they exi
6b60: 73 74 2e 0d 0a 23 20 20 45 6e 74 69 74 69 65 73  st...#  Entities
6b70: 20 61 72 65 20 61 6c 73 6f 20 6e 61 74 75 72 61   are also natura
6b80: 6c 6c 79 20 65 78 70 61 6e 64 65 64 0d 0a 23 2e  lly expanded..#.
6b90: 50 61 72 61 6d 65 74 65 72 20 43 6f 6e 74 65 6e  Parameter Conten
6ba0: 74 0d 0a 23 20 20 53 70 65 63 69 66 69 65 73 20  t..#  Specifies 
6bb0: 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 6f  a string that co
6bc0: 6e 74 61 69 6e 73 20 74 68 65 20 58 4d 4c 20 74  ntains the XML t
6bd0: 6f 20 74 72 61 6e 73 66 6f 72 6d 2e 0d 0a 23 2e  o transform...#.
6be0: 50 61 72 61 6d 65 74 65 72 20 50 61 74 68 0d 0a  Parameter Path..
6bf0: 23 20 20 53 70 65 63 69 66 69 65 73 20 74 68 65  #  Specifies the
6c00: 20 70 61 74 68 20 61 6e 64 20 66 69 6c 65 20 6e   path and file n
6c10: 61 6d 65 73 20 6f 66 20 74 68 65 20 58 4d 4c 20  ames of the XML 
6c20: 66 69 6c 65 73 20 74 6f 20 74 72 61 6e 73 66 6f  files to transfo
6c30: 72 6d 2e 20 57 69 6c 64 63 61 72 64 73 20 61 72  rm. Wildcards ar
6c40: 65 20 70 65 72 6d 69 74 74 65 64 2e 0d 0a 23 0d  e permitted...#.
6c50: 0a 23 20 20 54 68 65 72 65 20 77 69 6c 6c 20 62  .#  There will b
6c60: 65 20 6f 6e 65 20 6f 75 74 70 75 74 20 64 6f 63  e one output doc
6c70: 75 6d 65 6e 74 20 66 6f 72 20 65 61 63 68 20 6d  ument for each m
6c80: 61 74 63 68 69 6e 67 20 69 6e 70 75 74 20 66 69  atching input fi
6c90: 6c 65 2e 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72  le...#.Parameter
6ca0: 20 58 6d 6c 0d 0a 23 20 20 53 70 65 63 69 66 69   Xml..#  Specifi
6cb0: 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 58  es one or more X
6cc0: 4d 4c 20 64 6f 63 75 6d 65 6e 74 73 20 74 6f 20  ML documents to 
6cd0: 74 72 61 6e 73 66 6f 72 6d 0d 0a 5b 43 6d 64 6c  transform..[Cmdl
6ce0: 65 74 42 69 6e 64 69 6e 67 28 44 65 66 61 75 6c  etBinding(Defaul
6cf0: 74 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d  tParameterSetNam
6d00: 65 3d 22 58 6d 6c 22 29 5d 0d 0a 50 41 52 41 4d  e="Xml")]..PARAM
6d10: 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72  (..   [Parameter
6d20: 28 50 6f 73 69 74 69 6f 6e 3d 30 2c 50 61 72 61  (Position=0,Para
6d30: 6d 65 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d  meterSetName="Xm
6d40: 6c 22 29 5d 20 23 2c 4d 61 6e 64 61 74 6f 72 79  l")] #,Mandatory
6d50: 3d 24 74 72 75 65 0d 0a 20 20 20 23 5b 56 61 6c  =$true..   #[Val
6d60: 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d  idateNotNullOrEm
6d70: 70 74 79 28 29 5d 0d 0a 20 20 20 5b 58 4e 61 6d  pty()]..   [XNam
6d80: 65 73 70 61 63 65 5b 5d 5d 24 4e 61 6d 65 73 70  espace[]]$Namesp
6d90: 61 63 65 0d 0a 2c 0d 0a 20 20 20 5b 50 61 72 61  ace..,..   [Para
6da0: 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 31  meter(Position=1
6db0: 2c 50 61 72 61 6d 65 74 65 72 53 65 74 4e 61 6d  ,ParameterSetNam
6dc0: 65 3d 22 58 6d 6c 22 2c 4d 61 6e 64 61 74 6f 72  e="Xml",Mandator
6dd0: 79 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72 6f  y=$true,ValueFro
6de0: 6d 50 69 70 65 6c 69 6e 65 3d 24 74 72 75 65 2c  mPipeline=$true,
6df0: 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69 6e  ValueFromPipelin
6e00: 65 42 79 50 72 6f 70 65 72 74 79 4e 61 6d 65 3d  eByPropertyName=
6e10: 24 74 72 75 65 29 5d 0d 0a 20 20 20 5b 56 61 6c  $true)]..   [Val
6e20: 69 64 61 74 65 4e 6f 74 4e 75 6c 6c 4f 72 45 6d  idateNotNullOrEm
6e30: 70 74 79 28 29 5d 0d 0a 20 20 20 5b 41 6c 69 61  pty()]..   [Alia
6e40: 73 28 22 4e 6f 64 65 22 29 5d 0d 0a 20 20 20 5b  s("Node")]..   [
6e50: 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 6f  System.Xml.XmlNo
6e60: 64 65 5b 5d 5d 24 58 6d 6c 0d 0a 29 0d 0a 42 45  de[]]$Xml..)..BE
6e70: 47 49 4e 20 7b 0d 0a 20 20 20 66 6f 72 65 61 63  GIN {..   foreac
6e80: 68 28 24 4e 6f 64 65 20 69 6e 20 40 28 24 58 6d  h($Node in @($Xm
6e90: 6c 29 29 20 7b 0d 0a 20 20 20 20 20 20 24 41 6c  l)) {..      $Al
6ea0: 6c 73 70 61 63 65 73 20 2b 3d 20 47 65 74 2d 4e  lspaces += Get-N
6eb0: 61 6d 65 73 70 61 63 65 20 2d 58 6d 6c 20 24 4e  amespace -Xml $N
6ec0: 6f 64 65 0d 0a 0d 0a 20 20 20 20 20 20 24 6e 73  ode....      $ns
6ed0: 4d 61 6e 61 67 65 72 20 3d 20 6e 65 77 2d 6f 62  Manager = new-ob
6ee0: 6a 65 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e  ject System.Xml.
6ef0: 58 6d 6c 4e 61 6d 65 73 70 61 63 65 4d 61 6e 61  XmlNamespaceMana
6f00: 67 65 72 20 24 6e 6f 64 65 2e 4e 61 6d 65 54 61  ger $node.NameTa
6f10: 62 6c 65 0d 0a 20 20 20 20 20 20 66 6f 72 65 61  ble..      forea
6f20: 63 68 28 24 6e 73 20 69 6e 20 24 41 6c 6c 73 70  ch($ns in $Allsp
6f30: 61 63 65 73 2e 47 65 74 45 6e 75 6d 65 72 61 74  aces.GetEnumerat
6f40: 6f 72 28 29 29 20 7b 0d 0a 20 20 20 20 20 20 20  or()) {..       
6f50: 20 20 20 24 6e 73 4d 61 6e 61 67 65 72 2e 41 64     $nsManager.Ad
6f60: 64 4e 61 6d 65 73 70 61 63 65 28 20 24 6e 73 2e  dNamespace( $ns.
6f70: 4b 65 79 2c 20 24 6e 73 2e 56 61 6c 75 65 20 29  Key, $ns.Value )
6f80: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ..      }....   
6f90: 20 20 20 23 20 49 66 20 6e 6f 20 6e 61 6d 65 73     # If no names
6fa0: 70 61 63 65 73 20 61 72 65 20 70 61 73 73 65 64  paces are passed
6fb0: 20 69 6e 2c 20 75 73 65 20 74 68 65 20 22 69 67   in, use the "ig
6fc0: 6e 6f 72 61 62 6c 65 22 20 6f 6e 65 73 20 66 72  norable" ones fr
6fd0: 6f 6d 20 58 41 4d 4c 20 69 66 20 74 68 65 72 65  om XAML if there
6fe0: 20 61 72 65 20 61 6e 79 0d 0a 20 20 20 20 20 20   are any..      
6ff0: 69 66 28 21 24 4e 61 6d 65 73 70 61 63 65 29 20  if(!$Namespace) 
7000: 7b 0d 0a 20 20 20 20 20 20 20 20 20 24 72 6f 6f  {..         $roo
7010: 74 20 3d 20 24 4e 6f 64 65 2e 44 6f 63 75 6d 65  t = $Node.Docume
7020: 6e 74 45 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 20  ntElement..     
7030: 20 20 20 20 23 20 24 6e 73 4d 61 6e 61 67 65 72      # $nsManager
7040: 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53 79   = new-object Sy
7050: 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 4e 61 6d 65  stem.Xml.XmlName
7060: 73 70 61 63 65 4d 61 6e 61 67 65 72 20 24 4e 6f  spaceManager $No
7070: 64 65 2e 4e 61 6d 65 54 61 62 6c 65 20 20 20 20  de.NameTable    
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7090: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 20 24 6e     ..         $n
70a0: 73 4d 61 6e 61 67 65 72 2e 41 64 64 4e 61 6d 65  sManager.AddName
70b0: 73 70 61 63 65 28 22 63 6f 6d 70 61 74 22 2c 20  space("compat", 
70c0: 22 68 74 74 70 3a 2f 2f 73 63 68 65 6d 61 73 2e  "http://schemas.
70d0: 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2e 6f  openxmlformats.o
70e0: 72 67 2f 6d 61 72 6b 75 70 2d 63 6f 6d 70 61 74  rg/markup-compat
70f0: 69 62 69 6c 69 74 79 2f 32 30 30 36 22 29 0d 0a  ibility/2006")..
7100: 20 20 20 20 20 20 20 20 20 69 66 28 24 69 67 6e           if($ign
7110: 6f 72 61 62 6c 65 20 3d 20 24 72 6f 6f 74 2e 53  orable = $root.S
7120: 65 6c 65 63 74 53 69 6e 67 6c 65 4e 6f 64 65 28  electSingleNode(
7130: 22 40 63 6f 6d 70 61 74 3a 49 67 6e 6f 72 61 62  "@compat:Ignorab
7140: 6c 65 22 2c 24 6e 73 4d 61 6e 61 67 65 72 29 29  le",$nsManager))
7150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7160: 66 6f 72 65 61 63 68 28 24 70 72 65 66 69 78 20  foreach($prefix 
7170: 69 6e 20 24 69 67 6e 6f 72 61 62 6c 65 2e 67 65  in $ignorable.ge
7180: 74 5f 49 6e 6e 65 72 54 65 78 74 28 29 2e 53 70  t_InnerText().Sp
7190: 6c 69 74 28 22 20 22 29 29 20 7b 0d 0a 20 20 20  lit(" ")) {..   
71a0: 20 20 20 20 20 20 20 20 20 20 20 20 24 4e 61 6d              $Nam
71b0: 65 73 70 61 63 65 20 2b 3d 20 24 72 6f 6f 74 2e  espace += $root.
71c0: 47 65 74 4e 61 6d 65 73 70 61 63 65 4f 66 50 72  GetNamespaceOfPr
71d0: 65 66 69 78 28 24 70 72 65 66 69 78 29 0d 0a 20  efix($prefix).. 
71e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
71f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7200: 7d 0d 0a 20 20 20 7d 0d 0a 0d 0a 20 20 20 0d 0a  }..   }....   ..
7210: 20 20 20 57 72 69 74 65 2d 56 65 72 62 6f 73 65     Write-Verbose
7220: 20 22 24 4e 61 6d 65 73 70 61 63 65 22 0d 0a 20   "$Namespace".. 
7230: 20 20 24 69 20 3d 20 30 0d 0a 20 20 20 24 4e 53    $i = 0..   $NS
7240: 53 74 72 69 6e 67 20 3d 20 24 28 66 6f 72 65 61  String = $(forea
7250: 63 68 28 24 6e 20 69 6e 20 24 4e 61 6d 65 73 70  ch($n in $Namesp
7260: 61 63 65 29 20 7b 20 22 78 6d 6c 6e 73 3a 6e 24  ace) { "xmlns:n$
7270: 69 3d 27 24 6e 27 22 3b 20 24 69 2b 3d 31 20 7d  i='$n'"; $i+=1 }
7280: 29 20 2d 4a 6f 69 6e 20 22 20 22 0d 0a 20 20 20  ) -Join " "..   
7290: 24 45 6d 70 74 79 54 72 61 6e 73 66 6f 72 6d 73  $EmptyTransforms
72a0: 20 3d 20 24 28 66 6f 72 28 24 69 20 3d 30 3b 20   = $(for($i =0; 
72b0: 24 69 20 2d 6c 74 20 24 4e 61 6d 65 73 70 61 63  $i -lt $Namespac
72c0: 65 2e 43 6f 75 6e 74 3b 24 69 2b 2b 29 20 7b 0d  e.Count;$i++) {.
72d0: 0a 20 20 20 20 20 20 22 3c 78 73 6c 3a 74 65 6d  .      "<xsl:tem
72e0: 70 6c 61 74 65 20 6d 61 74 63 68 3d 27 6e 24 7b  plate match='n${
72f0: 69 7d 3a 2a 27 3e 0d 0a 20 20 20 20 20 20 3c 2f  i}:*'>..      </
7300: 78 73 6c 3a 74 65 6d 70 6c 61 74 65 3e 0d 0a 20  xsl:template>.. 
7310: 20 20 20 20 20 3c 78 73 6c 3a 74 65 6d 70 6c 61       <xsl:templa
7320: 74 65 20 6d 61 74 63 68 3d 27 40 6e 24 7b 69 7d  te match='@n${i}
7330: 3a 2a 27 3e 0d 0a 20 20 20 20 20 20 3c 2f 78 73  :*'>..      </xs
7340: 6c 3a 74 65 6d 70 6c 61 74 65 3e 22 0d 0a 20 20  l:template>"..  
7350: 20 7d 29 0d 0a 20 20 20 0d 0a 20 20 20 24 58 53   })..   ..   $XS
7360: 4c 54 20 3d 20 40 22 0d 0a 3c 78 73 6c 3a 73 74  LT = @"..<xsl:st
7370: 79 6c 65 73 68 65 65 74 20 76 65 72 73 69 6f 6e  ylesheet version
7380: 3d 22 31 2e 30 22 20 78 6d 6c 6e 73 3a 78 73 6c  ="1.0" xmlns:xsl
7390: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e  ="http://www.w3.
73a0: 6f 72 67 2f 31 39 39 39 2f 58 53 4c 2f 54 72 61  org/1999/XSL/Tra
73b0: 6e 73 66 6f 72 6d 22 20 24 4e 53 53 74 72 69 6e  nsform" $NSStrin
73c0: 67 3e 0d 0a 20 20 20 3c 78 73 6c 3a 6f 75 74 70  g>..   <xsl:outp
73d0: 75 74 20 6d 65 74 68 6f 64 3d 22 78 6d 6c 22 20  ut method="xml" 
73e0: 69 6e 64 65 6e 74 3d 22 79 65 73 22 2f 3e 0d 0a  indent="yes"/>..
73f0: 20 20 20 3c 78 73 6c 3a 74 65 6d 70 6c 61 74 65     <xsl:template
7400: 20 6d 61 74 63 68 3d 22 40 2a 7c 6e 6f 64 65 28   match="@*|node(
7410: 29 22 3e 0d 0a 20 20 20 20 20 20 3c 78 73 6c 3a  )">..      <xsl:
7420: 63 6f 70 79 3e 0d 0a 20 20 20 20 20 20 20 20 20  copy>..         
7430: 3c 78 73 6c 3a 61 70 70 6c 79 2d 74 65 6d 70 6c  <xsl:apply-templ
7440: 61 74 65 73 20 73 65 6c 65 63 74 3d 22 40 2a 7c  ates select="@*|
7450: 6e 6f 64 65 28 29 22 2f 3e 0d 0a 20 20 20 20 20  node()"/>..     
7460: 20 3c 2f 78 73 6c 3a 63 6f 70 79 3e 0d 0a 20 20   </xsl:copy>..  
7470: 20 3c 2f 78 73 6c 3a 74 65 6d 70 6c 61 74 65 3e   </xsl:template>
7480: 0d 0a 20 20 20 24 45 6d 70 74 79 54 72 61 6e 73  ..   $EmptyTrans
7490: 66 6f 72 6d 73 0d 0a 3c 2f 78 73 6c 3a 73 74 79  forms..</xsl:sty
74a0: 6c 65 73 68 65 65 74 3e 0d 0a 22 40 0d 0a 20 20  lesheet>.."@..  
74b0: 20 57 72 69 74 65 2d 56 65 72 62 6f 73 65 20 24   Write-Verbose $
74c0: 58 53 4c 54 0d 0a 20 0d 0a 20 20 20 24 53 74 79  XSLT.. ..   $Sty
74d0: 6c 65 53 68 65 65 74 20 3d 20 4e 65 77 2d 4f 62  leSheet = New-Ob
74e0: 6a 65 63 74 20 53 79 73 74 65 6d 2e 58 6d 6c 2e  ject System.Xml.
74f0: 58 73 6c 2e 58 73 6c 43 6f 6d 70 69 6c 65 64 54  Xsl.XslCompiledT
7500: 72 61 6e 73 66 6f 72 6d 0d 0a 20 20 20 24 53 74  ransform..   $St
7510: 79 6c 65 53 68 65 65 74 2e 4c 6f 61 64 28 28 5b  yleSheet.Load(([
7520: 53 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 52 65  System.Xml.XmlRe
7530: 61 64 65 72 5d 3a 3a 43 72 65 61 74 65 28 28 4e  ader]::Create((N
7540: 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d  ew-Object System
7550: 2e 49 4f 2e 53 74 72 69 6e 67 52 65 61 64 65 72  .IO.StringReader
7560: 20 24 58 53 4c 54 29 29 29 29 0d 0a 20 20 20 5b   $XSLT))))..   [
7570: 54 65 78 74 2e 53 74 72 69 6e 67 42 75 69 6c 64  Text.StringBuild
7580: 65 72 5d 24 58 6d 6c 43 6f 6e 74 65 6e 74 20 3d  er]$XmlContent =
7590: 20 5b 53 74 72 69 6e 67 5d 3a 3a 45 6d 70 74 79   [String]::Empty
75a0: 20 0d 0a 7d 0d 0a 50 52 4f 43 45 53 53 20 7b 0d   ..}..PROCESS {.
75b0: 0a 20 20 20 24 58 6d 6c 20 7c 20 43 6f 6e 76 65  .   $Xml | Conve
75c0: 72 74 2d 4e 6f 64 65 20 24 53 74 79 6c 65 53 68  rt-Node $StyleSh
75d0: 65 65 74 0d 0a 7d 0d 0a 7d 0d 0a 23 53 65 74 2d  eet..}..}..#Set-
75e0: 41 6c 69 61 73 20 72 6d 6e 73 20 52 65 6d 6f 76  Alias rmns Remov
75f0: 65 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 20 2d  e-XmlNamespace -
7600: 45 41 20 30 0d 0a 23 53 65 74 2d 41 6c 69 61 73  EA 0..#Set-Alias
7610: 20 72 6d 78 6e 73 20 52 65 6d 6f 76 65 2d 58 6d   rmxns Remove-Xm
7620: 6c 4e 61 6d 65 73 70 61 63 65 20 2d 45 41 20 30  lNamespace -EA 0
7630: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74  ....function Get
7640: 2d 4e 61 6d 65 73 70 61 63 65 20 7b 0d 0a 70 61  -Namespace {..pa
7650: 72 61 6d 28 0d 0a 20 20 20 5b 50 61 72 61 6d 65  ram(..   [Parame
7660: 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30 29 5d  ter(Position=0)]
7670: 0d 0a 20 20 20 5b 53 74 72 69 6e 67 5b 5d 5d 24  ..   [String[]]$
7680: 50 72 65 66 69 78 20 3d 20 22 2a 22 0d 0a 2c 0d  Prefix = "*"..,.
7690: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
76a0: 6f 73 69 74 69 6f 6e 3d 31 2c 50 61 72 61 6d 65  osition=1,Parame
76b0: 74 65 72 53 65 74 4e 61 6d 65 3d 22 58 6d 6c 22  terSetName="Xml"
76c0: 2c 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65  ,Mandatory=$true
76d0: 2c 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69  ,ValueFromPipeli
76e0: 6e 65 3d 24 74 72 75 65 2c 56 61 6c 75 65 46 72  ne=$true,ValueFr
76f0: 6f 6d 50 69 70 65 6c 69 6e 65 42 79 50 72 6f 70  omPipelineByProp
7700: 65 72 74 79 4e 61 6d 65 3d 24 74 72 75 65 29 5d  ertyName=$true)]
7710: 0d 0a 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f  ..   [ValidateNo
7720: 74 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d  tNullOrEmpty()].
7730: 0a 20 20 20 5b 41 6c 69 61 73 28 22 4e 6f 64 65  .   [Alias("Node
7740: 22 29 5d 0d 0a 20 20 20 5b 53 79 73 74 65 6d 2e  ")]..   [System.
7750: 58 6d 6c 2e 58 6d 6c 4e 6f 64 65 5b 5d 5d 24 58  Xml.XmlNode[]]$X
7760: 6d 6c 0d 0a 29 0d 0a 20 20 20 66 6f 72 65 61 63  ml..)..   foreac
7770: 68 28 24 4e 6f 64 65 20 69 6e 20 40 28 24 58 6d  h($Node in @($Xm
7780: 6c 29 29 20 7b 0d 0a 20 20 20 20 20 20 24 72 65  l)) {..      $re
7790: 73 75 6c 74 73 20 3d 20 40 7b 7d 0d 0a 20 20 20  sults = @{}..   
77a0: 20 20 20 69 66 28 24 4e 6f 64 65 20 2d 69 73 20     if($Node -is 
77b0: 5b 58 6d 6c 2e 58 6d 6c 44 6f 63 75 6d 65 6e 74  [Xml.XmlDocument
77c0: 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 24  ]) {..         $
77d0: 4e 6f 64 65 20 3d 20 24 4e 6f 64 65 2e 44 6f 63  Node = $Node.Doc
77e0: 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 0d 0a 20 20  umentElement..  
77f0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 66 6f 72      }..      for
7800: 65 61 63 68 28 24 6e 73 20 69 6e 20 24 4e 6f 64  each($ns in $Nod
7810: 65 2e 43 72 65 61 74 65 4e 61 76 69 67 61 74 6f  e.CreateNavigato
7820: 72 28 29 2e 47 65 74 4e 61 6d 65 73 70 61 63 65  r().GetNamespace
7830: 73 49 6e 53 63 6f 70 65 28 22 41 6c 6c 22 29 2e  sInScope("All").
7840: 47 65 74 45 6e 75 6d 65 72 61 74 6f 72 28 29 29  GetEnumerator())
7850: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 66 6f 72   {..         for
7860: 65 61 63 68 28 24 70 20 69 6e 20 24 50 72 65 66  each($p in $Pref
7870: 69 78 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ix) {..         
7880: 20 20 20 69 66 28 24 6e 73 2e 4b 65 79 20 2d 6c     if($ns.Key -l
7890: 69 6b 65 20 24 70 29 20 7b 0d 0a 20 20 20 20 20  ike $p) {..     
78a0: 20 20 20 20 20 20 20 20 20 20 24 72 65 73 75 6c            $resul
78b0: 74 73 2e 41 64 64 28 24 6e 73 2e 4b 65 79 2c 20  ts.Add($ns.Key, 
78c0: 24 6e 73 2e 56 61 6c 75 65 29 0d 0a 20 20 20 20  $ns.Value)..    
78d0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
78e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
78f0: 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ..         }..  
7900: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 24 72 65      }..      $re
7910: 73 75 6c 74 73 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a  sults..   }..}..
7920: 0d 0a 0d 0a 0d 0a 23 23 23 23 23 23 23 23 20 48  ......######## H
7930: 65 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 73 20  elper functions 
7940: 66 6f 72 20 77 6f 72 6b 69 6e 67 20 77 69 74 68  for working with
7950: 20 43 6c 69 58 6d 6c 0d 0a 0d 0a 66 75 6e 63 74   CliXml....funct
7960: 69 6f 6e 20 43 6f 6e 76 65 72 74 46 72 6f 6d 2d  ion ConvertFrom-
7970: 43 6c 69 58 6d 6c 20 7b 0d 0a 20 20 20 70 61 72  CliXml {..   par
7980: 61 6d 28 0d 0a 20 20 20 20 20 20 5b 50 61 72 61  am(..      [Para
7990: 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30  meter(Position=0
79a0: 2c 20 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75  , Mandatory=$tru
79b0: 65 2c 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65  e, ValueFromPipe
79c0: 6c 69 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20  line=$true)]..  
79d0: 20 20 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74      [ValidateNot
79e0: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a  NullOrEmpty()]..
79f0: 20 20 20 20 20 20 5b 53 74 72 69 6e 67 5b 5d 5d        [String[]]
7a00: 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20 20  $InputObject..  
7a10: 20 29 0d 0a 20 20 20 62 65 67 69 6e 0d 0a 20 20   )..   begin..  
7a20: 20 7b 0d 0a 20 20 20 20 20 20 24 4f 46 53 20 3d   {..      $OFS =
7a30: 20 22 60 6e 22 0d 0a 20 20 20 20 20 20 5b 53 74   "`n"..      [St
7a40: 72 69 6e 67 5d 24 78 6d 6c 53 74 72 69 6e 67 20  ring]$xmlString 
7a50: 3d 20 22 22 0d 0a 20 20 20 7d 0d 0a 20 20 20 70  = ""..   }..   p
7a60: 72 6f 63 65 73 73 0d 0a 20 20 20 7b 0d 0a 20 20  rocess..   {..  
7a70: 20 20 20 20 24 78 6d 6c 53 74 72 69 6e 67 20 2b      $xmlString +
7a80: 3d 20 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a  = $InputObject..
7a90: 20 20 20 7d 0d 0a 20 20 20 65 6e 64 0d 0a 20 20     }..   end..  
7aa0: 20 7b 0d 0a 20 20 20 20 20 20 24 74 79 70 65 20   {..      $type 
7ab0: 3d 20 5b 70 73 6f 62 6a 65 63 74 5d 2e 61 73 73  = [psobject].ass
7ac0: 65 6d 62 6c 79 2e 67 65 74 74 79 70 65 28 22 53  embly.gettype("S
7ad0: 79 73 74 65 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74  ystem.Management
7ae0: 2e 41 75 74 6f 6d 61 74 69 6f 6e 2e 44 65 73 65  .Automation.Dese
7af0: 72 69 61 6c 69 7a 65 72 22 29 0d 0a 20 20 20 20  rializer")..    
7b00: 20 20 24 63 74 6f 72 20 3d 20 24 74 79 70 65 2e    $ctor = $type.
7b10: 67 65 74 63 6f 6e 73 74 72 75 63 74 6f 72 28 22  getconstructor("
7b20: 69 6e 73 74 61 6e 63 65 2c 6e 6f 6e 70 75 62 6c  instance,nonpubl
7b30: 69 63 22 2c 20 24 6e 75 6c 6c 2c 20 40 28 5b 78  ic", $null, @([x
7b40: 6d 6c 2e 78 6d 6c 72 65 61 64 65 72 5d 29 2c 20  ml.xmlreader]), 
7b50: 24 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 24 73  $null)..      $s
7b60: 72 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53  r = new-object S
7b70: 79 73 74 65 6d 2e 49 4f 2e 53 74 72 69 6e 67 52  ystem.IO.StringR
7b80: 65 61 64 65 72 20 24 78 6d 6c 53 74 72 69 6e 67  eader $xmlString
7b90: 0d 0a 20 20 20 20 20 20 24 78 72 20 3d 20 6e 65  ..      $xr = ne
7ba0: 77 2d 6f 62 6a 65 63 74 20 53 79 73 74 65 6d 2e  w-object System.
7bb0: 58 6d 6c 2e 58 6d 6c 54 65 78 74 52 65 61 64 65  Xml.XmlTextReade
7bc0: 72 20 24 73 72 0d 0a 20 20 20 20 20 20 24 64 65  r $sr..      $de
7bd0: 73 65 72 69 61 6c 69 7a 65 72 20 3d 20 24 63 74  serializer = $ct
7be0: 6f 72 2e 69 6e 76 6f 6b 65 28 24 78 72 29 0d 0a  or.invoke($xr)..
7bf0: 20 20 20 20 20 20 24 6d 65 74 68 6f 64 20 3d 20        $method = 
7c00: 40 28 24 74 79 70 65 2e 67 65 74 6d 65 74 68 6f  @($type.getmetho
7c10: 64 73 28 22 6e 6f 6e 70 75 62 6c 69 63 2c 69 6e  ds("nonpublic,in
7c20: 73 74 61 6e 63 65 22 29 20 7c 20 77 68 65 72 65  stance") | where
7c30: 2d 6f 62 6a 65 63 74 20 7b 24 5f 2e 6e 61 6d 65  -object {$_.name
7c40: 20 2d 6c 69 6b 65 20 22 44 65 73 65 72 69 61 6c   -like "Deserial
7c50: 69 7a 65 22 7d 29 5b 31 5d 0d 0a 20 20 20 20 20  ize"})[1]..     
7c60: 20 24 64 6f 6e 65 20 3d 20 24 74 79 70 65 2e 67   $done = $type.g
7c70: 65 74 6d 65 74 68 6f 64 28 22 44 6f 6e 65 22 2c  etmethod("Done",
7c80: 20 5b 53 79 73 74 65 6d 2e 52 65 66 6c 65 63 74   [System.Reflect
7c90: 69 6f 6e 2e 42 69 6e 64 69 6e 67 46 6c 61 67 73  ion.BindingFlags
7ca0: 5d 22 6e 6f 6e 70 75 62 6c 69 63 2c 69 6e 73 74  ]"nonpublic,inst
7cb0: 61 6e 63 65 22 29 0d 0a 20 20 20 20 20 20 77 68  ance")..      wh
7cc0: 69 6c 65 20 28 21 24 64 6f 6e 65 2e 69 6e 76 6f  ile (!$done.invo
7cd0: 6b 65 28 24 64 65 73 65 72 69 61 6c 69 7a 65 72  ke($deserializer
7ce0: 2c 20 40 28 29 29 29 0d 0a 20 20 20 20 20 20 7b  , @()))..      {
7cf0: 0d 0a 20 20 20 20 20 20 20 20 20 74 72 79 20 7b  ..         try {
7d00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 6d  ..            $m
7d10: 65 74 68 6f 64 2e 69 6e 76 6f 6b 65 28 24 64 65  ethod.invoke($de
7d20: 73 65 72 69 61 6c 69 7a 65 72 2c 20 22 22 29 0d  serializer, "").
7d30: 0a 20 20 20 20 20 20 20 20 20 7d 20 63 61 74 63  .         } catc
7d40: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h {..           
7d50: 20 77 72 69 74 65 2d 77 61 72 6e 69 6e 67 20 22   write-warning "
7d60: 43 6f 75 6c 64 20 6e 6f 74 20 64 65 73 65 72 69  Could not deseri
7d70: 61 6c 69 7a 65 20 24 78 6d 6c 53 74 72 69 6e 67  alize $xmlString
7d80: 22 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  "..         }.. 
7d90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 24 78       }..      $x
7da0: 72 2e 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 20  r.Close()..     
7db0: 20 24 73 72 2e 44 69 73 70 6f 73 65 28 29 0d 0a   $sr.Dispose()..
7dc0: 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 66 75 6e 63 74     }..}....funct
7dd0: 69 6f 6e 20 43 6f 6e 76 65 72 74 54 6f 2d 43 6c  ion ConvertTo-Cl
7de0: 69 58 6d 6c 20 7b 0d 0a 20 20 20 70 61 72 61 6d  iXml {..   param
7df0: 28 0d 0a 20 20 20 20 20 20 5b 50 61 72 61 6d 65  (..      [Parame
7e00: 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 30 2c 20  ter(Position=0, 
7e10: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 2c  Mandatory=$true,
7e20: 20 56 61 6c 75 65 46 72 6f 6d 50 69 70 65 6c 69   ValueFromPipeli
7e30: 6e 65 3d 24 74 72 75 65 29 5d 0d 0a 20 20 20 20  ne=$true)]..    
7e40: 20 20 5b 56 61 6c 69 64 61 74 65 4e 6f 74 4e 75    [ValidateNotNu
7e50: 6c 6c 4f 72 45 6d 70 74 79 28 29 5d 0d 0a 20 20  llOrEmpty()]..  
7e60: 20 20 20 20 5b 50 53 4f 62 6a 65 63 74 5b 5d 5d      [PSObject[]]
7e70: 24 49 6e 70 75 74 4f 62 6a 65 63 74 0d 0a 20 20  $InputObject..  
7e80: 20 29 0d 0a 20 20 20 62 65 67 69 6e 20 7b 0d 0a   )..   begin {..
7e90: 20 20 20 20 20 20 24 74 79 70 65 20 3d 20 5b 70        $type = [p
7ea0: 73 6f 62 6a 65 63 74 5d 2e 61 73 73 65 6d 62 6c  sobject].assembl
7eb0: 79 2e 67 65 74 74 79 70 65 28 22 53 79 73 74 65  y.gettype("Syste
7ec0: 6d 2e 4d 61 6e 61 67 65 6d 65 6e 74 2e 41 75 74  m.Management.Aut
7ed0: 6f 6d 61 74 69 6f 6e 2e 53 65 72 69 61 6c 69 7a  omation.Serializ
7ee0: 65 72 22 29 0d 0a 20 20 20 20 20 20 24 63 74 6f  er")..      $cto
7ef0: 72 20 3d 20 24 74 79 70 65 2e 67 65 74 63 6f 6e  r = $type.getcon
7f00: 73 74 72 75 63 74 6f 72 28 22 69 6e 73 74 61 6e  structor("instan
7f10: 63 65 2c 6e 6f 6e 70 75 62 6c 69 63 22 2c 20 24  ce,nonpublic", $
7f20: 6e 75 6c 6c 2c 20 40 28 5b 53 79 73 74 65 6d 2e  null, @([System.
7f30: 58 6d 6c 2e 58 6d 6c 57 72 69 74 65 72 5d 29 2c  Xml.XmlWriter]),
7f40: 20 24 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 24   $null)..      $
7f50: 73 77 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20  sw = new-object 
7f60: 53 79 73 74 65 6d 2e 49 4f 2e 53 74 72 69 6e 67  System.IO.String
7f70: 57 72 69 74 65 72 0d 0a 20 20 20 20 20 20 24 78  Writer..      $x
7f80: 77 20 3d 20 6e 65 77 2d 6f 62 6a 65 63 74 20 53  w = new-object S
7f90: 79 73 74 65 6d 2e 58 6d 6c 2e 58 6d 6c 54 65 78  ystem.Xml.XmlTex
7fa0: 74 57 72 69 74 65 72 20 24 73 77 0d 0a 20 20 20  tWriter $sw..   
7fb0: 20 20 20 24 73 65 72 69 61 6c 69 7a 65 72 20 3d     $serializer =
7fc0: 20 24 63 74 6f 72 2e 69 6e 76 6f 6b 65 28 24 78   $ctor.invoke($x
7fd0: 77 29 0d 0a 20 20 20 20 20 20 24 6d 65 74 68 6f  w)..      $metho
7fe0: 64 20 3d 20 24 74 79 70 65 2e 67 65 74 6d 65 74  d = $type.getmet
7ff0: 68 6f 64 28 22 53 65 72 69 61 6c 69 7a 65 22 2c  hod("Serialize",
8000: 20 22 6e 6f 6e 70 75 62 6c 69 63 2c 69 6e 73 74   "nonpublic,inst
8010: 61 6e 63 65 22 2c 20 24 6e 75 6c 6c 2c 20 5b 74  ance", $null, [t
8020: 79 70 65 5b 5d 5d 40 28 5b 6f 62 6a 65 63 74 5d  ype[]]@([object]
8030: 29 2c 20 24 6e 75 6c 6c 29 0d 0a 20 20 20 20 20  ), $null)..     
8040: 20 24 64 6f 6e 65 20 3d 20 24 74 79 70 65 2e 67   $done = $type.g
8050: 65 74 6d 65 74 68 6f 64 28 22 44 6f 6e 65 22 2c  etmethod("Done",
8060: 20 5b 53 79 73 74 65 6d 2e 52 65 66 6c 65 63 74   [System.Reflect
8070: 69 6f 6e 2e 42 69 6e 64 69 6e 67 46 6c 61 67 73  ion.BindingFlags
8080: 5d 22 6e 6f 6e 70 75 62 6c 69 63 2c 69 6e 73 74  ]"nonpublic,inst
8090: 61 6e 63 65 22 29 0d 0a 20 20 20 7d 0d 0a 20 20  ance")..   }..  
80a0: 20 70 72 6f 63 65 73 73 20 7b 0d 0a 20 20 20 20   process {..    
80b0: 20 20 74 72 79 20 7b 0d 0a 20 20 20 20 20 20 20    try {..       
80c0: 20 20 5b 76 6f 69 64 5d 24 6d 65 74 68 6f 64 2e    [void]$method.
80d0: 69 6e 76 6f 6b 65 28 24 73 65 72 69 61 6c 69 7a  invoke($serializ
80e0: 65 72 2c 20 24 49 6e 70 75 74 4f 62 6a 65 63 74  er, $InputObject
80f0: 29 0d 0a 20 20 20 20 20 20 7d 20 63 61 74 63 68  )..      } catch
8100: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 77 72 69   {..         wri
8110: 74 65 2d 77 61 72 6e 69 6e 67 20 22 43 6f 75 6c  te-warning "Coul
8120: 64 20 6e 6f 74 20 73 65 72 69 61 6c 69 7a 65 20  d not serialize 
8130: 24 28 24 49 6e 70 75 74 4f 62 6a 65 63 74 2e 67  $($InputObject.g
8140: 65 74 74 79 70 65 28 29 29 3a 20 24 49 6e 70 75  ettype()): $Inpu
8150: 74 4f 62 6a 65 63 74 22 0d 0a 20 20 20 20 20 20  tObject"..      
8160: 7d 0d 0a 20 20 20 7d 0d 0a 20 20 20 65 6e 64 20  }..   }..   end 
8170: 7b 20 20 20 20 0d 0a 20 20 20 20 20 20 5b 76 6f  {    ..      [vo
8180: 69 64 5d 24 64 6f 6e 65 2e 69 6e 76 6f 6b 65 28  id]$done.invoke(
8190: 24 73 65 72 69 61 6c 69 7a 65 72 2c 20 40 28 29  $serializer, @()
81a0: 29 0d 0a 20 20 20 20 20 20 24 73 77 2e 54 6f 53  )..      $sw.ToS
81b0: 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20 24  tring()..      $
81c0: 78 77 2e 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20  xw.Close()..    
81d0: 20 20 24 73 77 2e 44 69 73 70 6f 73 65 28 29 0d    $sw.Dispose().
81e0: 0a 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 23  .   }..}......##
81f0: 23 23 23 23 23 23 20 46 72 6f 6d 20 68 65 72 65  ###### From here
8200: 20 64 6f 77 6e 20 69 73 20 61 6c 6c 20 74 68 65   down is all the
8210: 20 63 6f 64 65 20 72 65 6c 61 74 65 64 20 74 6f   code related to
8220: 20 6d 79 20 58 4d 4c 20 44 53 4c 3a 0d 0a 0d 0a   my XML DSL:....
8230: 66 75 6e 63 74 69 6f 6e 20 4e 65 77 2d 58 44 6f  function New-XDo
8240: 63 75 6d 65 6e 74 20 7b 0d 0a 23 2e 53 79 6e 6f  cument {..#.Syno
8250: 70 73 69 73 0d 0a 23 20 20 20 43 72 65 61 74 65  psis..#   Create
8260: 73 20 61 20 6e 65 77 20 58 44 6f 63 75 6d 65 6e  s a new XDocumen
8270: 74 20 28 74 68 65 20 6e 65 77 20 78 6d 6c 20 64  t (the new xml d
8280: 6f 63 75 6d 65 6e 74 20 74 79 70 65 29 0d 0a 23  ocument type)..#
8290: 2e 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20  .Description..# 
82a0: 20 54 68 69 73 20 69 73 20 74 68 65 20 72 6f 6f   This is the roo
82b0: 74 20 66 6f 72 20 61 20 6e 65 77 20 58 4d 4c 20  t for a new XML 
82c0: 6d 69 6e 69 2d 64 73 6c 2c 20 61 6b 69 6e 20 74  mini-dsl, akin t
82d0: 6f 20 4e 65 77 2d 42 6f 6f 74 73 57 69 6e 64 6f  o New-BootsWindo
82e0: 77 20 66 6f 72 20 58 41 4d 4c 0d 0a 23 20 20 49  w for XAML..#  I
82f0: 74 20 63 72 65 61 74 65 73 20 61 20 6e 65 77 20  t creates a new 
8300: 58 44 6f 63 75 6d 65 6e 74 2c 20 61 6e 64 20 74  XDocument, and t
8310: 61 6b 65 73 20 73 63 72 69 74 70 62 6c 6f 63 6b  akes scritpblock
8320: 28 73 29 20 74 6f 20 64 65 66 69 6e 65 20 69 74  (s) to define it
8330: 27 73 20 63 6f 6e 74 65 6e 74 73 0d 0a 23 2e 45  's contents..#.E
8340: 78 61 6d 70 6c 65 0d 0a 23 20 5b 73 74 72 69 6e  xample..# [strin
8350: 67 5d 24 78 6d 6c 20 3d 20 4e 65 77 2d 58 44 6f  g]$xml = New-XDo
8360: 63 75 6d 65 6e 74 20 72 73 73 20 2d 76 65 72 73  cument rss -vers
8370: 69 6f 6e 20 22 32 2e 30 22 20 7b 0d 0a 23 20 20  ion "2.0" {..#  
8380: 20 20 63 68 61 6e 6e 65 6c 20 7b 0d 0a 23 20 20    channel {..#  
8390: 20 20 20 20 20 74 69 74 6c 65 20 7b 22 54 65 73       title {"Tes
83a0: 74 20 52 53 53 20 46 65 65 64 22 7d 0d 0a 23 20  t RSS Feed"}..# 
83b0: 20 20 20 20 20 20 6c 69 6e 6b 20 7b 22 68 74 74        link {"htt
83c0: 70 60 3a 2f 2f 48 75 64 64 6c 65 64 4d 61 73 73  p`://HuddledMass
83d0: 65 73 2e 6f 72 67 22 7d 0d 0a 23 20 20 20 20 20  es.org"}..#     
83e0: 20 20 64 65 73 63 72 69 70 74 69 6f 6e 20 7b 22    description {"
83f0: 41 6e 20 52 53 53 20 46 65 65 64 20 67 65 6e 65  An RSS Feed gene
8400: 72 61 74 65 64 20 73 69 6d 70 6c 79 20 74 6f 20  rated simply to 
8410: 64 65 6d 6f 6e 73 74 72 61 74 65 20 6d 79 20 58  demonstrate my X
8420: 4d 4c 20 44 53 4c 22 7d 0d 0a 23 20 20 20 20 20  ML DSL"}..#     
8430: 20 20 69 74 65 6d 20 7b 0d 0a 23 20 20 20 20 20    item {..#     
8440: 20 20 20 20 20 74 69 74 6c 65 20 7b 22 54 68 65       title {"The
8450: 20 46 69 72 73 74 20 49 74 65 6d 22 7d 0d 0a 23   First Item"}..#
8460: 20 20 20 20 20 20 20 20 20 20 6c 69 6e 6b 20 7b            link {
8470: 22 68 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64  "http`://huddled
8480: 6d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73  masses.org/new-s
8490: 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c  ite-new-layout-l
84a0: 6f 73 74 2d 70 6f 73 74 73 2f 22 7d 0d 0a 23 20  ost-posts/"}..# 
84b0: 20 20 20 20 20 20 20 20 20 67 75 69 64 20 2d 69           guid -i
84c0: 73 50 65 72 6d 61 4c 69 6e 6b 20 74 72 75 65 20  sPermaLink true 
84d0: 7b 22 68 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65  {"http`://huddle
84e0: 64 6d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d  dmasses.org/new-
84f0: 73 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d  site-new-layout-
8500: 6c 6f 73 74 2d 70 6f 73 74 73 2f 22 7d 0d 0a 23  lost-posts/"}..#
8510: 20 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69            descri
8520: 70 74 69 6f 6e 20 7b 22 45 6d 61 20 4c 61 7a 61  ption {"Ema Laza
8530: 72 75 73 27 20 50 6f 65 6d 22 7d 0d 0a 23 20 20  rus' Poem"}..#  
8540: 20 20 20 20 20 20 20 20 70 75 62 44 61 74 65 20          pubDate 
8550: 7b 28 47 65 74 2d 44 61 74 65 20 31 30 2f 33 31  {(Get-Date 10/31
8560: 2f 32 30 30 33 20 2d 66 20 75 29 20 2d 72 65 70  /2003 -f u) -rep
8570: 6c 61 63 65 20 22 20 22 2c 22 54 22 7d 0d 0a 23  lace " ","T"}..#
8580: 20 20 20 20 20 20 20 7d 0d 0a 23 20 20 20 20 7d         }..#    }
8590: 0d 0a 23 20 7d 0d 0a 23 0d 0a 23 20 43 3a 5c 50  ..# }..#..# C:\P
85a0: 53 3e 24 78 6d 6c 2e 44 65 63 6c 61 72 61 74 69  S>$xml.Declarati
85b0: 6f 6e 2e 54 6f 53 74 72 69 6e 67 28 29 20 20 23  on.ToString()  #
85c0: 23 20 49 20 63 61 6e 27 74 20 66 69 6e 64 20 61  # I can't find a
85d0: 20 77 61 79 20 74 6f 20 68 61 76 65 20 74 68 69   way to have thi
85e0: 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  s included in th
85f0: 65 20 24 78 6d 6c 2e 54 6f 53 74 72 69 6e 67 28  e $xml.ToString(
8600: 29 0d 0a 23 20 43 3a 5c 50 53 3e 24 78 6d 6c 2e  )..# C:\PS>$xml.
8610: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 23 0d 0a 23  ToString()..#..#
8620: 20 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22   <?xml version="
8630: 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55  1.0" encoding="U
8640: 54 46 2d 38 22 20 73 74 61 6e 64 61 6c 6f 6e 65  TF-8" standalone
8650: 3d 22 79 65 73 22 3f 3e 0d 0a 23 20 3c 72 73 73  ="yes"?>..# <rss
8660: 20 76 65 72 73 69 6f 6e 3d 22 32 2e 30 22 3e 0d   version="2.0">.
8670: 0a 23 20 20 20 3c 63 68 61 6e 6e 65 6c 3e 0d 0a  .#   <channel>..
8680: 23 20 20 20 20 20 3c 74 69 74 6c 65 3e 54 65 73  #     <title>Tes
8690: 74 20 52 53 53 20 46 65 65 64 3c 2f 74 69 74 6c  t RSS Feed</titl
86a0: 65 3e 0d 0a 23 20 20 20 20 20 3c 6c 69 6e 6b 3e  e>..#     <link>
86b0: 68 74 74 70 20 3a 2f 2f 48 75 64 64 6c 65 64 4d  http ://HuddledM
86c0: 61 73 73 65 73 2e 6f 72 67 3c 2f 6c 69 6e 6b 3e  asses.org</link>
86d0: 0d 0a 23 20 20 20 20 20 3c 64 65 73 63 72 69 70  ..#     <descrip
86e0: 74 69 6f 6e 3e 41 6e 20 52 53 53 20 46 65 65 64  tion>An RSS Feed
86f0: 20 67 65 6e 65 72 61 74 65 64 20 73 69 6d 70 6c   generated simpl
8700: 79 20 74 6f 20 64 65 6d 6f 6e 73 74 72 61 74 65  y to demonstrate
8710: 20 6d 79 20 58 4d 4c 20 44 53 4c 3c 2f 64 65 73   my XML DSL</des
8720: 63 72 69 70 74 69 6f 6e 3e 0d 0a 23 20 20 20 20  cription>..#    
8730: 20 3c 69 74 65 6d 3e 0d 0a 23 20 20 20 20 20 20   <item>..#      
8740: 20 3c 74 69 74 6c 65 3e 54 68 65 20 46 69 72 73   <title>The Firs
8750: 74 20 49 74 65 6d 3c 2f 74 69 74 6c 65 3e 0d 0a  t Item</title>..
8760: 23 20 20 20 20 20 20 20 3c 6c 69 6e 6b 3e 68 74  #       <link>ht
8770: 74 70 20 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73  tp ://huddledmas
8780: 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73 69 74 65  ses.org/new-site
8790: 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c 6f 73 74  -new-layout-lost
87a0: 2d 70 6f 73 74 73 2f 3c 2f 6c 69 6e 6b 3e 0d 0a  -posts/</link>..
87b0: 23 20 20 20 20 20 20 20 3c 67 75 69 64 20 69 73  #       <guid is
87c0: 50 65 72 6d 61 4c 69 6e 6b 3d 22 74 72 75 65 22  PermaLink="true"
87d0: 3e 68 74 74 70 20 3a 2f 2f 68 75 64 64 6c 65 64  >http ://huddled
87e0: 6d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73  masses.org/new-s
87f0: 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c  ite-new-layout-l
8800: 6f 73 74 2d 70 6f 73 74 73 2f 3c 2f 67 75 69 64  ost-posts/</guid
8810: 3e 0d 0a 23 20 20 20 20 20 20 20 3c 64 65 73 63  >..#       <desc
8820: 72 69 70 74 69 6f 6e 3e 45 6d 61 20 4c 61 7a 61  ription>Ema Laza
8830: 72 75 73 27 20 50 6f 65 6d 3c 2f 64 65 73 63 72  rus' Poem</descr
8840: 69 70 74 69 6f 6e 3e 0d 0a 23 20 20 20 20 20 20  iption>..#      
8850: 20 3c 70 75 62 44 61 74 65 3e 32 30 30 33 2d 31   <pubDate>2003-1
8860: 30 2d 33 31 54 30 30 3a 30 30 3a 30 30 5a 3c 2f  0-31T00:00:00Z</
8870: 70 75 62 44 61 74 65 3e 0d 0a 23 20 20 20 20 20  pubDate>..#     
8880: 3c 2f 69 74 65 6d 3e 0d 0a 23 20 20 20 3c 2f 63  </item>..#   </c
8890: 68 61 6e 6e 65 6c 3e 0d 0a 23 20 3c 2f 72 73 73  hannel>..# </rss
88a0: 3e 0d 0a 23 0d 0a 23 0d 0a 23 20 44 65 73 63 72  >..#..#..# Descr
88b0: 69 70 74 69 6f 6e 0d 0a 23 20 2d 2d 2d 2d 2d 2d  iption..# ------
88c0: 2d 2d 2d 2d 2d 0d 0a 23 20 54 68 69 73 20 65 78  -----..# This ex
88d0: 61 6d 70 6c 65 20 73 68 6f 77 73 20 74 68 65 20  ample shows the 
88e0: 63 72 65 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f  creation of a co
88f0: 6d 70 6c 65 74 65 20 52 53 53 20 66 65 65 64 20  mplete RSS feed 
8900: 77 69 74 68 20 61 20 73 69 6e 67 6c 65 20 69 74  with a single it
8910: 65 6d 20 69 6e 20 69 74 2e 20 0d 0a 23 0d 0a 23  em in it. ..#..#
8920: 20 4e 4f 54 45 20 74 68 61 74 20 74 68 65 20 62   NOTE that the b
8930: 61 63 6b 74 69 63 6b 20 69 6e 20 74 68 65 20 68  acktick in the h
8940: 74 74 70 60 3a 20 69 6e 20 74 68 65 20 55 52 4c  ttp`: in the URL
8950: 73 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20 69  s in the input i
8960: 73 20 75 6e 65 63 65 73 73 61 72 79 2c 20 61 6e  s unecessary, an
8970: 64 20 49 20 61 64 64 65 64 20 74 68 65 20 73 70  d I added the sp
8980: 61 63 65 20 61 66 74 65 72 20 74 68 65 20 68 74  ace after the ht
8990: 74 70 3a 20 69 6e 20 74 68 65 20 55 52 4c 73 20  tp: in the URLs 
89a0: 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 2d   in the output -
89b0: 2d 20 74 68 65 73 65 20 61 72 65 20 61 63 63 6f  - these are acco
89c0: 6d 6f 64 61 74 69 6f 6e 73 20 74 6f 20 50 6f 73  modations to Pos
89d0: 68 43 6f 64 65 27 73 20 73 70 61 6d 20 66 69 6c  hCode's spam fil
89e0: 74 65 72 2e 20 42 61 63 6b 74 69 63 6b 73 20 61  ter. Backticks a
89f0: 72 65 20 6e 6f 74 20 6e 65 65 64 20 69 6e 20 74  re not need in t
8a00: 68 65 20 69 6e 70 75 74 2c 20 61 6e 64 20 73 70  he input, and sp
8a10: 61 63 65 73 20 64 6f 20 6e 6f 74 20 61 70 70 65  aces do not appe
8a20: 61 72 20 69 6e 20 74 68 65 20 61 63 74 75 61 6c  ar in the actual
8a30: 20 6f 75 74 70 75 74 2e 0d 0a 23 0d 0a 23 0d 0a   output...#..#..
8a40: 23 2e 45 78 61 6d 70 6c 65 20 0d 0a 23 20 5b 58  #.Example ..# [X
8a50: 4e 61 6d 65 73 70 61 63 65 5d 24 61 74 6f 6d 3d  Namespace]$atom=
8a60: 22 68 74 74 70 60 3a 2f 2f 77 77 77 2e 77 33 2e  "http`://www.w3.
8a70: 6f 72 67 2f 32 30 30 35 2f 41 74 6f 6d 22 0d 0a  org/2005/Atom"..
8a80: 23 20 43 3a 5c 50 53 3e 5b 58 4e 61 6d 65 73 70  # C:\PS>[XNamesp
8a90: 61 63 65 5d 24 64 63 20 3d 20 22 68 74 74 70 60  ace]$dc = "http`
8aa0: 3a 2f 2f 70 75 72 6c 2e 6f 72 67 2f 64 63 2f 65  ://purl.org/dc/e
8ab0: 6c 65 6d 65 6e 74 73 2f 31 2e 31 22 0d 0a 23 20  lements/1.1"..# 
8ac0: 0d 0a 23 20 43 3a 5c 50 53 3e 4e 65 77 2d 58 44  ..# C:\PS>New-XD
8ad0: 6f 63 75 6d 65 6e 74 20 28 24 61 74 6f 6d 20 2b  ocument ($atom +
8ae0: 20 22 66 65 65 64 22 29 20 2d 45 6e 63 6f 64 69   "feed") -Encodi
8af0: 6e 67 20 22 55 54 46 2d 31 36 22 20 2d 24 28 5b  ng "UTF-16" -$([
8b00: 58 4e 61 6d 65 73 70 61 63 65 5d 3a 3a 58 6d 6c  XNamespace]::Xml
8b10: 20 2b 27 6c 61 6e 67 27 29 20 22 65 6e 2d 55 53   +'lang') "en-US
8b20: 22 20 2d 64 63 20 24 64 63 20 7b 0d 0a 23 20 20  " -dc $dc {..#  
8b30: 20 20 74 69 74 6c 65 20 7b 22 54 65 73 74 20 46    title {"Test F
8b40: 69 72 73 74 20 45 6e 74 72 79 22 7d 0d 0a 23 20  irst Entry"}..# 
8b50: 20 20 20 6c 69 6e 6b 20 7b 22 68 74 74 70 60 3a     link {"http`:
8b60: 2f 2f 48 75 64 64 6c 65 64 4d 61 73 73 65 73 2e  //HuddledMasses.
8b70: 6f 72 67 22 7d 0d 0a 23 20 20 20 20 75 70 64 61  org"}..#    upda
8b80: 74 65 64 20 7b 28 47 65 74 2d 44 61 74 65 20 2d  ted {(Get-Date -
8b90: 66 20 75 29 20 2d 72 65 70 6c 61 63 65 20 22 20  f u) -replace " 
8ba0: 22 2c 22 54 22 7d 0d 0a 23 20 20 20 20 61 75 74  ","T"}..#    aut
8bb0: 68 6f 72 20 7b 0d 0a 23 20 20 20 20 20 20 20 6e  hor {..#       n
8bc0: 61 6d 65 20 7b 22 4a 6f 65 6c 20 42 65 6e 6e 65  ame {"Joel Benne
8bd0: 74 74 22 7d 0d 0a 23 20 20 20 20 20 20 20 75 72  tt"}..#       ur
8be0: 69 20 7b 22 68 74 74 70 60 3a 2f 2f 48 75 64 64  i {"http`://Hudd
8bf0: 6c 65 64 4d 61 73 73 65 73 2e 6f 72 67 22 7d 0d  ledMasses.org"}.
8c00: 0a 23 20 20 20 20 7d 0d 0a 23 20 20 20 20 69 64  .#    }..#    id
8c10: 20 7b 22 68 74 74 70 60 3a 2f 2f 68 75 64 64 6c   {"http`://huddl
8c20: 65 64 6d 61 73 73 65 73 2e 6f 72 67 2f 22 20 7d  edmasses.org/" }
8c30: 0d 0a 23 0d 0a 23 20 20 20 20 65 6e 74 72 79 20  ..#..#    entry 
8c40: 7b 0d 0a 23 20 20 20 20 20 20 20 74 69 74 6c 65  {..#       title
8c50: 20 7b 22 54 65 73 74 20 46 69 72 73 74 20 45 6e   {"Test First En
8c60: 74 72 79 22 7d 0d 0a 23 20 20 20 20 20 20 20 6c  try"}..#       l
8c70: 69 6e 6b 20 7b 22 68 74 74 70 60 3a 2f 2f 48 75  ink {"http`://Hu
8c80: 64 64 6c 65 64 4d 61 73 73 65 73 2e 6f 72 67 2f  ddledMasses.org/
8c90: 6e 65 77 2d 73 69 74 65 2d 6e 65 77 2d 6c 61 79  new-site-new-lay
8ca0: 6f 75 74 2d 6c 6f 73 74 2d 70 6f 73 74 73 2f 22  out-lost-posts/"
8cb0: 20 7d 0d 0a 23 20 20 20 20 20 20 20 69 64 20 7b   }..#       id {
8cc0: 22 68 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64  "http`://huddled
8cd0: 6d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77 2d 73  masses.org/new-s
8ce0: 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74 2d 6c  ite-new-layout-l
8cf0: 6f 73 74 2d 70 6f 73 74 73 2f 22 20 7d 0d 0a 23  ost-posts/" }..#
8d00: 20 20 20 20 20 20 20 75 70 64 61 74 65 64 20 7b         updated {
8d10: 28 47 65 74 2d 44 61 74 65 20 31 30 2f 33 31 2f  (Get-Date 10/31/
8d20: 32 30 30 33 20 2d 66 20 75 29 20 2d 72 65 70 6c  2003 -f u) -repl
8d30: 61 63 65 20 22 20 22 2c 22 54 22 7d 0d 0a 23 20  ace " ","T"}..# 
8d40: 20 20 20 20 20 20 73 75 6d 6d 61 72 79 20 7b 22        summary {"
8d50: 45 6d 61 20 4c 61 7a 61 72 75 73 27 20 50 6f 65  Ema Lazarus' Poe
8d60: 6d 22 7d 0d 0a 23 20 20 20 20 20 20 20 6c 69 6e  m"}..#       lin
8d70: 6b 20 2d 72 65 6c 20 6c 69 63 65 6e 73 65 20 2d  k -rel license -
8d80: 68 72 65 66 20 22 68 74 74 70 60 3a 2f 2f 63 72  href "http`://cr
8d90: 65 61 74 69 76 65 63 6f 6d 6d 6f 6e 73 2e 6f 72  eativecommons.or
8da0: 67 2f 6c 69 63 65 6e 73 65 73 2f 62 79 2f 33 2e  g/licenses/by/3.
8db0: 30 2f 22 20 2d 74 69 74 6c 65 20 22 43 43 20 42  0/" -title "CC B
8dc0: 79 2d 41 74 74 72 69 62 75 74 69 6f 6e 22 0d 0a  y-Attribution"..
8dd0: 23 20 20 20 20 20 20 20 64 63 3a 72 69 67 68 74  #       dc:right
8de0: 73 20 7b 20 22 43 6f 70 79 72 69 67 68 74 20 32  s { "Copyright 2
8df0: 30 30 39 2c 20 53 6f 6d 65 20 72 69 67 68 74 73  009, Some rights
8e00: 20 72 65 73 65 72 76 65 64 20 28 6c 69 63 65 6e   reserved (licen
8e10: 73 65 64 20 75 6e 64 65 72 20 74 68 65 20 43 72  sed under the Cr
8e20: 65 61 74 69 76 65 20 43 6f 6d 6d 6f 6e 73 20 41  eative Commons A
8e30: 74 74 72 69 62 75 74 69 6f 6e 20 33 2e 30 20 55  ttribution 3.0 U
8e40: 6e 70 6f 72 74 65 64 20 6c 69 63 65 6e 73 65 29  nported license)
8e50: 22 20 7d 0d 0a 23 20 20 20 20 20 20 20 63 61 74  " }..#       cat
8e60: 65 67 6f 72 79 20 2d 73 63 68 65 6d 65 20 22 68  egory -scheme "h
8e70: 74 74 70 60 3a 2f 2f 68 75 64 64 6c 65 64 6d 61  ttp`://huddledma
8e80: 73 73 65 73 2e 6f 72 67 2f 74 61 67 2f 22 20 2d  sses.org/tag/" -
8e90: 74 65 72 6d 20 22 68 75 64 64 6c 65 64 2d 6d 61  term "huddled-ma
8ea0: 73 73 65 73 22 0d 0a 23 20 20 20 20 7d 0d 0a 23  sses"..#    }..#
8eb0: 20 7d 20 7c 20 25 20 7b 20 24 5f 2e 44 65 63 6c   } | % { $_.Decl
8ec0: 61 72 61 74 69 6f 6e 2e 54 6f 53 74 72 69 6e 67  aration.ToString
8ed0: 28 29 3b 20 24 5f 2e 54 6f 53 74 72 69 6e 67 28  (); $_.ToString(
8ee0: 29 20 7d 0d 0a 23 0d 0a 23 20 3c 3f 78 6d 6c 20  ) }..#..# <?xml 
8ef0: 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e  version="1.0" en
8f00: 63 6f 64 69 6e 67 3d 22 55 54 46 2d 31 36 22 20  coding="UTF-16" 
8f10: 73 74 61 6e 64 61 6c 6f 6e 65 3d 22 79 65 73 22  standalone="yes"
8f20: 3f 3e 0d 0a 23 20 3c 66 65 65 64 20 78 6d 6c 3a  ?>..# <feed xml:
8f30: 6c 61 6e 67 3d 22 65 6e 2d 55 53 22 20 78 6d 6c  lang="en-US" xml
8f40: 6e 73 3d 22 68 74 74 70 20 3a 2f 2f 77 77 77 2e  ns="http ://www.
8f50: 77 33 2e 6f 72 67 2f 32 30 30 35 2f 41 74 6f 6d  w3.org/2005/Atom
8f60: 22 3e 0d 0a 23 20 20 20 3c 74 69 74 6c 65 3e 54  ">..#   <title>T
8f70: 65 73 74 20 46 69 72 73 74 20 45 6e 74 72 79 3c  est First Entry<
8f80: 2f 74 69 74 6c 65 3e 0d 0a 23 20 20 20 3c 6c 69  /title>..#   <li
8f90: 6e 6b 3e 68 74 74 70 20 3a 2f 2f 48 75 64 64 6c  nk>http ://Huddl
8fa0: 65 64 4d 61 73 73 65 73 2e 6f 72 67 3c 2f 6c 69  edMasses.org</li
8fb0: 6e 6b 3e 0d 0a 23 20 20 20 3c 75 70 64 61 74 65  nk>..#   <update
8fc0: 64 3e 32 30 30 39 2d 30 37 2d 32 39 54 31 37 3a  d>2009-07-29T17:
8fd0: 32 35 3a 34 39 5a 3c 2f 75 70 64 61 74 65 64 3e  25:49Z</updated>
8fe0: 0d 0a 23 20 20 20 3c 61 75 74 68 6f 72 3e 0d 0a  ..#   <author>..
8ff0: 23 20 20 20 20 20 20 3c 6e 61 6d 65 3e 4a 6f 65  #      <name>Joe
9000: 6c 20 42 65 6e 6e 65 74 74 3c 2f 6e 61 6d 65 3e  l Bennett</name>
9010: 0d 0a 23 20 20 20 20 20 20 3c 75 72 69 3e 68 74  ..#      <uri>ht
9020: 74 70 20 3a 2f 2f 48 75 64 64 6c 65 64 4d 61 73  tp ://HuddledMas
9030: 73 65 73 2e 6f 72 67 3c 2f 75 72 69 3e 0d 0a 23  ses.org</uri>..#
9040: 20 20 20 3c 2f 61 75 74 68 6f 72 3e 0d 0a 23 20     </author>..# 
9050: 20 20 3c 69 64 3e 68 74 74 70 20 3a 2f 2f 68 75    <id>http ://hu
9060: 64 64 6c 65 64 6d 61 73 73 65 73 2e 6f 72 67 2f  ddledmasses.org/
9070: 3c 2f 69 64 3e 0d 0a 23 20 20 20 3c 65 6e 74 72  </id>..#   <entr
9080: 79 3e 0d 0a 23 20 20 20 20 20 3c 74 69 74 6c 65  y>..#     <title
9090: 3e 54 65 73 74 20 46 69 72 73 74 20 45 6e 74 72  >Test First Entr
90a0: 79 3c 2f 74 69 74 6c 65 3e 0d 0a 23 20 20 20 20  y</title>..#    
90b0: 20 3c 6c 69 6e 6b 3e 68 74 74 70 20 3a 2f 2f 48   <link>http ://H
90c0: 75 64 64 6c 65 64 4d 61 73 73 65 73 2e 6f 72 67  uddledMasses.org
90d0: 2f 6e 65 77 2d 73 69 74 65 2d 6e 65 77 2d 6c 61  /new-site-new-la
90e0: 79 6f 75 74 2d 6c 6f 73 74 2d 70 6f 73 74 73 2f  yout-lost-posts/
90f0: 3c 2f 6c 69 6e 6b 3e 0d 0a 23 20 20 20 20 20 3c  </link>..#     <
9100: 69 64 3e 68 74 74 70 20 3a 2f 2f 68 75 64 64 6c  id>http ://huddl
9110: 65 64 6d 61 73 73 65 73 2e 6f 72 67 2f 6e 65 77  edmasses.org/new
9120: 2d 73 69 74 65 2d 6e 65 77 2d 6c 61 79 6f 75 74  -site-new-layout
9130: 2d 6c 6f 73 74 2d 70 6f 73 74 73 2f 3c 2f 69 64  -lost-posts/</id
9140: 3e 0d 0a 23 20 20 20 20 20 3c 75 70 64 61 74 65  >..#     <update
9150: 64 3e 32 30 30 33 2d 31 30 2d 33 31 54 30 30 3a  d>2003-10-31T00:
9160: 30 30 3a 30 30 5a 3c 2f 75 70 64 61 74 65 64 3e  00:00Z</updated>
9170: 0d 0a 23 20 20 20 20 20 3c 73 75 6d 6d 61 72 79  ..#     <summary
9180: 3e 45 6d 61 20 4c 61 7a 61 72 75 73 27 20 50 6f  >Ema Lazarus' Po
9190: 65 6d 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 23 20  em</summary>..# 
91a0: 20 20 20 20 3c 6c 69 6e 6b 20 72 65 6c 3d 22 6c      <link rel="l
91b0: 69 63 65 6e 73 65 22 20 68 72 65 66 3d 22 68 74  icense" href="ht
91c0: 74 70 20 3a 2f 2f 63 72 65 61 74 69 76 65 63 6f  tp ://creativeco
91d0: 6d 6d 6f 6e 73 2e 6f 72 67 2f 6c 69 63 65 6e 73  mmons.org/licens
91e0: 65 73 2f 62 79 2f 33 2e 30 2f 22 20 74 69 74 6c  es/by/3.0/" titl
91f0: 65 3d 22 43 43 20 42 79 2d 41 74 74 72 69 62 75  e="CC By-Attribu
9200: 74 69 6f 6e 22 20 2f 3e 0d 0a 23 20 20 20 20 20  tion" />..#     
9210: 3c 64 63 3a 72 69 67 68 74 73 3e 43 6f 70 79 72  <dc:rights>Copyr
9220: 69 67 68 74 20 32 30 30 39 2c 20 53 6f 6d 65 20  ight 2009, Some 
9230: 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 20  rights reserved 
9240: 28 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20  (licensed under 
9250: 74 68 65 20 43 72 65 61 74 69 76 65 20 43 6f 6d  the Creative Com
9260: 6d 6f 6e 73 20 41 74 74 72 69 62 75 74 69 6f 6e  mons Attribution
9270: 20 33 2e 30 20 55 6e 70 6f 72 74 65 64 20 6c 69   3.0 Unported li
9280: 63 65 6e 73 65 29 3c 2f 64 63 3a 72 69 67 68 74  cense)</dc:right
9290: 73 3e 0d 0a 23 20 20 20 20 20 3c 63 61 74 65 67  s>..#     <categ
92a0: 6f 72 79 20 73 63 68 65 6d 65 3d 22 68 74 74 70  ory scheme="http
92b0: 20 3a 2f 2f 68 75 64 64 6c 65 64 6d 61 73 73 65   ://huddledmasse
92c0: 73 2e 6f 72 67 2f 74 61 67 2f 22 20 74 65 72 6d  s.org/tag/" term
92d0: 3d 22 68 75 64 64 6c 65 64 2d 6d 61 73 73 65 73  ="huddled-masses
92e0: 22 20 2f 3e 0d 0a 23 20 20 20 3c 2f 65 6e 74 72  " />..#   </entr
92f0: 79 3e 0d 0a 23 20 3c 2f 66 65 65 64 3e 0d 0a 23  y>..# </feed>..#
9300: 0d 0a 23 0d 0a 23 20 44 65 73 63 72 69 70 74 69  ..#..# Descripti
9310: 6f 6e 0d 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  on..# ----------
9320: 2d 0d 0a 23 20 54 68 69 73 20 65 78 61 6d 70 6c  -..# This exampl
9330: 65 20 73 68 6f 77 73 20 74 68 65 20 75 73 65 20  e shows the use 
9340: 6f 66 20 61 20 64 65 66 61 75 6c 74 20 6e 61 6d  of a default nam
9350: 65 73 70 61 63 65 2c 20 61 73 20 77 65 6c 6c 20  espace, as well 
9360: 61 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 73 70  as additional sp
9370: 65 63 69 66 69 63 20 6e 61 6d 65 73 70 61 63 65  ecific namespace
9380: 73 20 66 6f 72 20 74 68 65 20 22 64 63 22 20 6e  s for the "dc" n
9390: 61 6d 65 73 70 61 63 65 2e 20 49 74 20 61 6c 73  amespace. It als
93a0: 6f 20 64 65 6d 6f 6e 73 74 72 61 74 65 73 20 68  o demonstrates h
93b0: 6f 77 20 79 6f 75 20 63 61 6e 20 67 65 74 20 74  ow you can get t
93c0: 68 65 20 3c 3f 78 6d 6c 3f 3e 20 64 65 63 6c 61  he <?xml?> decla
93d0: 72 61 74 69 6f 6e 20 77 68 69 63 68 20 64 6f 65  ration which doe
93e0: 73 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20  s not appear in 
93f0: 61 20 73 69 6d 70 6c 65 20 2e 54 6f 53 74 72 69  a simple .ToStri
9400: 6e 67 28 29 2e 0d 0a 23 0d 0a 23 20 4e 4f 54 45  ng()...#..# NOTE
9410: 20 74 68 61 74 20 74 68 65 20 62 61 63 6b 74 69   that the backti
9420: 63 6b 20 69 6e 20 74 68 65 20 68 74 74 70 60 3a  ck in the http`:
9430: 20 69 6e 20 74 68 65 20 55 52 4c 73 20 69 6e 20   in the URLs in 
9440: 74 68 65 20 69 6e 70 75 74 20 69 73 20 75 6e 65  the input is une
9450: 63 65 73 73 61 72 79 2c 20 61 6e 64 20 49 20 61  cessary, and I a
9460: 64 64 65 64 20 74 68 65 20 73 70 61 63 65 20 61  dded the space a
9470: 66 74 65 72 20 74 68 65 20 68 74 74 70 3a 20 69  fter the http: i
9480: 6e 20 74 68 65 20 55 52 4c 73 20 20 69 6e 20 74  n the URLs  in t
9490: 68 65 20 6f 75 74 70 75 74 20 2d 2d 20 74 68 65  he output -- the
94a0: 73 65 20 61 72 65 20 61 63 63 6f 6d 6f 64 61 74  se are accomodat
94b0: 69 6f 6e 73 20 74 6f 20 50 6f 73 68 43 6f 64 65  ions to PoshCode
94c0: 27 73 20 73 70 61 6d 20 66 69 6c 74 65 72 2e 20  's spam filter. 
94d0: 42 61 63 6b 74 69 63 6b 73 20 61 72 65 20 6e 6f  Backticks are no
94e0: 74 20 6e 65 65 64 20 69 6e 20 74 68 65 20 69 6e  t need in the in
94f0: 70 75 74 2c 20 61 6e 64 20 73 70 61 63 65 73 20  put, and spaces 
9500: 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e  do not appear in
9510: 20 74 68 65 20 61 63 74 75 61 6c 20 6f 75 74 70   the actual outp
9520: 75 74 2e 23 0d 0a 23 20 0d 0a 5b 43 6d 64 6c 65  ut.#..# ..[Cmdle
9530: 74 42 69 6e 64 69 6e 67 28 29 5d 0d 0a 50 61 72  tBinding()]..Par
9540: 61 6d 28 0d 0a 20 20 20 23 20 54 68 65 20 72 6f  am(..   # The ro
9550: 6f 74 20 6e 6f 64 65 20 6e 61 6d 65 0d 0a 20 20  ot node name..  
9560: 20 5b 50 61 72 61 6d 65 74 65 72 28 4d 61 6e 64   [Parameter(Mand
9570: 61 74 6f 72 79 20 3d 20 24 74 72 75 65 2c 20 50  atory = $true, P
9580: 6f 73 69 74 69 6f 6e 20 3d 20 30 29 5d 0d 0a 20  osition = 0)].. 
9590: 20 20 5b 53 79 73 74 65 6d 2e 58 6d 6c 2e 4c 69    [System.Xml.Li
95a0: 6e 71 2e 58 4e 61 6d 65 5d 24 72 6f 6f 74 0d 0a  nq.XName]$root..
95b0: 2c 0d 0a 20 20 20 23 20 4f 70 74 69 6f 6e 61 6c  ,..   # Optional
95c0: 3a 20 74 68 65 20 58 4d 4c 20 76 65 72 73 69 6f  : the XML versio
95d0: 6e 2e 20 44 65 66 61 75 6c 74 73 20 74 6f 20 31  n. Defaults to 1
95e0: 2e 30 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  .0..   [Paramete
95f0: 72 28 4d 61 6e 64 61 74 6f 72 79 20 3d 20 24 66  r(Mandatory = $f
9600: 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 73 74 72 69  alse)]..   [stri
9610: 6e 67 5d 24 56 65 72 73 69 6f 6e 20 3d 20 22 31  ng]$Version = "1
9620: 2e 30 22 0d 0a 2c 0d 0a 20 20 20 23 20 4f 70 74  .0"..,..   # Opt
9630: 69 6f 6e 61 6c 3a 20 74 68 65 20 45 6e 63 6f 64  ional: the Encod
9640: 69 6e 67 2e 20 44 65 66 61 75 6c 74 73 20 74 6f  ing. Defaults to
9650: 20 55 54 46 2d 38 0d 0a 20 20 20 5b 50 61 72 61   UTF-8..   [Para
9660: 6d 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 20  meter(Mandatory 
9670: 3d 20 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b  = $false)]..   [
9680: 73 74 72 69 6e 67 5d 24 45 6e 63 6f 64 69 6e 67  string]$Encoding
9690: 20 3d 20 22 55 54 46 2d 38 22 0d 0a 2c 0d 0a 20   = "UTF-8"..,.. 
96a0: 20 20 23 20 4f 70 74 69 6f 6e 61 6c 3a 20 77 68    # Optional: wh
96b0: 65 74 68 65 72 20 74 6f 20 73 70 65 63 69 66 79  ether to specify
96c0: 20 73 74 61 6e 64 61 6c 6f 6e 65 20 69 6e 20 74   standalone in t
96d0: 68 65 20 78 6d 6c 20 64 65 63 6c 61 72 61 74 69  he xml declarati
96e0: 6f 6e 2e 20 44 65 66 61 75 6c 74 73 20 74 6f 20  on. Defaults to 
96f0: 22 79 65 73 22 0d 0a 20 20 20 5b 50 61 72 61 6d  "yes"..   [Param
9700: 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 20 3d  eter(Mandatory =
9710: 20 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 73   $false)]..   [s
9720: 74 72 69 6e 67 5d 24 53 74 61 6e 64 61 6c 6f 6e  tring]$Standalon
9730: 65 20 3d 20 22 79 65 73 22 0d 0a 2c 0d 0a 20 20  e = "yes"..,..  
9740: 20 23 20 41 20 48 61 73 68 74 61 62 6c 65 20 6f   # A Hashtable o
9750: 66 20 70 61 72 61 6d 65 74 65 72 73 20 77 68 69  f parameters whi
9760: 63 68 20 73 68 6f 75 6c 64 20 62 65 20 61 76 61  ch should be ava
9770: 69 6c 61 62 6c 65 20 61 73 20 6c 6f 63 61 6c 20  ilable as local 
9780: 76 61 72 69 61 62 6c 65 73 20 74 6f 20 74 68 65  variables to the
9790: 20 73 63 72 69 70 74 62 6c 6f 63 6b 20 69 6e 20   scriptblock in 
97a0: 61 72 67 73 0d 0a 20 20 20 5b 50 61 72 61 6d 65  args..   [Parame
97b0: 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 20 3d 20  ter(Mandatory = 
97c0: 24 66 61 6c 73 65 29 5d 0d 0a 20 20 20 5b 68 61  $false)]..   [ha
97d0: 73 68 74 61 62 6c 65 5d 24 50 61 72 61 6d 65 74  shtable]$Paramet
97e0: 65 72 73 0d 0a 2c 0d 0a 20 20 20 23 20 74 68 69  ers..,..   # thi
97f0: 73 20 69 73 20 77 68 65 72 65 20 61 6c 6c 20 74  s is where all t
9800: 68 65 20 64 73 6c 20 6d 61 67 69 63 20 68 61 70  he dsl magic hap
9810: 70 65 6e 73 2e 20 50 6c 65 61 73 65 20 73 65 65  pens. Please see
9820: 20 74 68 65 20 45 78 61 6d 70 6c 65 73 2e 20 3a   the Examples. :
9830: 29 0d 0a 20 20 20 5b 41 6c 6c 6f 77 4e 75 6c 6c  )..   [AllowNull
9840: 28 29 5d 5b 41 6c 6c 6f 77 45 6d 70 74 79 53 74  ()][AllowEmptySt
9850: 72 69 6e 67 28 29 5d 5b 41 6c 6c 6f 77 45 6d 70  ring()][AllowEmp
9860: 74 79 43 6f 6c 6c 65 63 74 69 6f 6e 28 29 5d 0d  tyCollection()].
9870: 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28 50  .   [Parameter(P
9880: 6f 73 69 74 69 6f 6e 3d 39 39 2c 20 4d 61 6e 64  osition=99, Mand
9890: 61 74 6f 72 79 20 3d 20 24 66 61 6c 73 65 2c 20  atory = $false, 
98a0: 56 61 6c 75 65 46 72 6f 6d 52 65 6d 61 69 6e 69  ValueFromRemaini
98b0: 6e 67 41 72 67 75 6d 65 6e 74 73 3d 24 74 72 75  ngArguments=$tru
98c0: 65 29 5d 0d 0a 20 20 20 5b 50 53 4f 62 6a 65 63  e)]..   [PSObjec
98d0: 74 5b 5d 5d 24 61 72 67 73 0d 0a 29 0d 0a 42 45  t[]]$args..)..BE
98e0: 47 49 4e 20 7b 0d 0a 20 20 20 24 73 63 72 69 70  GIN {..   $scrip
98f0: 74 3a 4e 61 6d 65 53 70 61 63 65 48 61 73 68 20  t:NameSpaceHash 
9900: 3d 20 4e 65 77 2d 4f 62 6a 65 63 74 20 27 44 69  = New-Object 'Di
9910: 63 74 69 6f 6e 61 72 79 5b 53 74 72 69 6e 67 2c  ctionary[String,
9920: 58 4e 61 6d 65 73 70 61 63 65 5d 27 0d 0a 20 20  XNamespace]'..  
9930: 20 69 66 28 24 72 6f 6f 74 2e 4e 61 6d 65 73 70   if($root.Namesp
9940: 61 63 65 4e 61 6d 65 29 20 7b 0d 0a 20 20 20 20  aceName) {..    
9950: 20 20 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70    $script:NameSp
9960: 61 63 65 48 61 73 68 2e 41 64 64 28 22 22 2c 20  aceHash.Add("", 
9970: 24 72 6f 6f 74 2e 4e 61 6d 65 73 70 61 63 65 29  $root.Namespace)
9980: 0d 0a 20 20 20 7d 0d 0a 7d 0d 0a 50 52 4f 43 45  ..   }..}..PROCE
9990: 53 53 20 7b 0d 0a 20 20 20 69 66 28 24 50 61 72  SS {..   if($Par
99a0: 61 6d 65 74 65 72 73 29 20 7b 0d 0a 20 20 20 20  ameters) {..    
99b0: 20 20 66 6f 72 65 61 63 68 28 24 6b 65 79 20 69    foreach($key i
99c0: 6e 20 24 50 61 72 61 6d 65 74 65 72 73 2e 4b 65  n $Parameters.Ke
99d0: 79 73 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  ys) {..         
99e0: 53 65 74 2d 56 61 72 69 61 62 6c 65 20 24 6b 65  Set-Variable $ke
99f0: 79 20 24 50 61 72 61 6d 65 74 65 72 73 2e 24 6b  y $Parameters.$k
9a00: 65 79 20 2d 53 63 6f 70 65 20 53 63 72 69 70 74  ey -Scope Script
9a10: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 7d 0d  ..      }..   }.
9a20: 0a 20 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20 58  .   New-Object X
9a30: 44 6f 63 75 6d 65 6e 74 20 28 4e 65 77 2d 4f 62  Document (New-Ob
9a40: 6a 65 63 74 20 58 44 65 63 6c 61 72 61 74 69 6f  ject XDeclaratio
9a50: 6e 20 24 56 65 72 73 69 6f 6e 2c 20 24 45 6e 63  n $Version, $Enc
9a60: 6f 64 69 6e 67 2c 20 24 73 74 61 6e 64 61 6c 6f  oding, $standalo
9a70: 6e 65 29 2c 28 0d 0a 20 20 20 20 20 20 4e 65 77  ne),(..      New
9a80: 2d 4f 62 6a 65 63 74 20 58 45 6c 65 6d 65 6e 74  -Object XElement
9a90: 20 24 28 0d 0a 20 20 20 20 20 20 20 20 20 24 72   $(..         $r
9aa0: 6f 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 77 68  oot..         wh
9ab0: 69 6c 65 28 24 61 72 67 73 29 20 7b 0d 0a 20 20  ile($args) {..  
9ac0: 20 20 20 20 20 20 20 20 20 20 24 61 74 74 72 69            $attri
9ad0: 62 2c 20 24 76 61 6c 75 65 2c 20 24 61 72 67 73  b, $value, $args
9ae0: 20 3d 20 24 61 72 67 73 0d 0a 20 20 20 20 20 20   = $args..      
9af0: 20 20 20 20 20 20 69 66 28 24 61 74 74 72 69 62        if($attrib
9b00: 20 2d 69 73 20 5b 53 63 72 69 70 74 42 6c 6f 63   -is [ScriptBloc
9b10: 6b 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  k]) {..         
9b20: 20 20 20 20 20 20 23 20 57 72 69 74 65 2d 56 65        # Write-Ve
9b30: 72 62 6f 73 65 20 22 50 72 65 70 61 72 73 65 64  rbose "Preparsed
9b40: 20 44 53 4c 3a 20 24 61 74 74 72 69 62 22 0d 0a   DSL: $attrib"..
9b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
9b60: 61 74 74 72 69 62 20 3d 20 43 6f 6e 76 65 72 74  attrib = Convert
9b70: 46 72 6f 6d 2d 58 6d 6c 44 73 6c 20 24 61 74 74  From-XmlDsl $att
9b80: 72 69 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rib..           
9b90: 20 20 20 20 57 72 69 74 65 2d 56 65 72 62 6f 73      Write-Verbos
9ba0: 65 20 22 52 65 70 61 72 73 65 64 20 44 53 4c 3a  e "Reparsed DSL:
9bb0: 20 24 61 74 74 72 69 62 22 0d 0a 20 20 20 20 20   $attrib"..     
9bc0: 20 20 20 20 20 20 20 20 20 20 26 20 24 61 74 74            & $att
9bd0: 72 69 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rib..           
9be0: 20 7d 20 65 6c 73 65 69 66 20 28 20 24 76 61 6c   } elseif ( $val
9bf0: 75 65 20 2d 69 73 20 5b 53 63 72 69 70 74 42 6c  ue -is [ScriptBl
9c00: 6f 63 6b 5d 20 2d 61 6e 64 20 22 2d 43 4f 4e 54  ock] -and "-CONT
9c10: 45 4e 54 22 2e 53 74 61 72 74 73 57 69 74 68 28  ENT".StartsWith(
9c20: 24 61 74 74 72 69 62 2e 54 72 69 6d 45 6e 64 28  $attrib.TrimEnd(
9c30: 27 3a 27 29 2e 54 6f 55 70 70 65 72 28 29 29 29  ':').ToUpper()))
9c40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9c50: 20 20 20 24 76 61 6c 75 65 20 3d 20 43 6f 6e 76     $value = Conv
9c60: 65 72 74 46 72 6f 6d 2d 58 6d 6c 44 73 6c 20 24  ertFrom-XmlDsl $
9c70: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
9c80: 20 20 20 20 20 20 57 72 69 74 65 2d 56 65 72 62        Write-Verb
9c90: 6f 73 65 20 22 52 65 70 61 72 73 65 64 20 44 53  ose "Reparsed DS
9ca0: 4c 3a 20 24 76 61 6c 75 65 22 0d 0a 20 20 20 20  L: $value"..    
9cb0: 20 20 20 20 20 20 20 20 20 20 20 26 20 24 76 61             & $va
9cc0: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
9cd0: 20 7d 20 65 6c 73 65 69 66 20 28 20 24 76 61 6c   } elseif ( $val
9ce0: 75 65 20 2d 69 73 20 5b 58 4e 61 6d 65 73 70 61  ue -is [XNamespa
9cf0: 63 65 5d 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ce]) {..        
9d00: 20 20 20 20 20 20 20 4e 65 77 2d 4f 62 6a 65 63         New-Objec
9d10: 74 20 58 41 74 74 72 69 62 75 74 65 20 28 5b 58  t XAttribute ([X
9d20: 4e 61 6d 65 73 70 61 63 65 5d 3a 3a 58 6d 6c 6e  Namespace]::Xmln
9d30: 73 20 2b 20 24 61 74 74 72 69 62 2e 54 72 69 6d  s + $attrib.Trim
9d40: 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d 45  Start("-").TrimE
9d50: 6e 64 28 27 3a 27 29 29 2c 20 24 76 61 6c 75 65  nd(':')), $value
9d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9d70: 20 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61   $script:NameSpa
9d80: 63 65 48 61 73 68 2e 41 64 64 28 24 61 74 74 72  ceHash.Add($attr
9d90: 69 62 2e 54 72 69 6d 53 74 61 72 74 28 22 2d 22  ib.TrimStart("-"
9da0: 29 2e 54 72 69 6d 45 6e 64 28 27 3a 27 29 2c 20  ).TrimEnd(':'), 
9db0: 24 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20  $value)..       
9dc0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
9dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 72                Wr
9de0: 69 74 65 2d 56 65 72 62 6f 73 65 20 22 58 41 74  ite-Verbose "XAt
9df0: 74 72 69 62 75 74 65 20 24 61 74 74 72 69 62 20  tribute $attrib 
9e00: 3d 20 24 76 61 6c 75 65 22 0d 0a 20 20 20 20 20  = $value"..     
9e10: 20 20 20 20 20 20 20 20 20 20 4e 65 77 2d 4f 62            New-Ob
9e20: 6a 65 63 74 20 58 41 74 74 72 69 62 75 74 65 20  ject XAttribute 
9e30: 24 61 74 74 72 69 62 2e 54 72 69 6d 53 74 61 72  $attrib.TrimStar
9e40: 74 28 22 2d 22 29 2e 54 72 69 6d 45 6e 64 28 27  t("-").TrimEnd('
9e50: 3a 27 29 2c 20 24 76 61 6c 75 65 0d 0a 20 20 20  :'), $value..   
9e60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9e70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 29 29       }..      ))
9e80: 0d 0a 7d 0d 0a 7d 0d 0a 0d 0a 53 65 74 2d 41 6c  ..}..}....Set-Al
9e90: 69 61 73 20 78 6d 6c 20 4e 65 77 2d 58 44 6f 63  ias xml New-XDoc
9ea0: 75 6d 65 6e 74 20 2d 45 41 20 30 0d 0a 53 65 74  ument -EA 0..Set
9eb0: 2d 41 6c 69 61 73 20 4e 65 77 2d 58 6d 6c 20 4e  -Alias New-Xml N
9ec0: 65 77 2d 58 44 6f 63 75 6d 65 6e 74 20 2d 45 41  ew-XDocument -EA
9ed0: 20 30 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 4e   0....function N
9ee0: 65 77 2d 58 41 74 74 72 69 62 75 74 65 20 7b 0d  ew-XAttribute {.
9ef0: 0a 23 2e 53 79 6e 6f 70 73 79 73 0d 0a 23 20 20  .#.Synopsys..#  
9f00: 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 58   Creates a new X
9f10: 41 74 74 72 69 62 75 74 65 20 28 61 6e 20 78 6d  Attribute (an xm
9f20: 6c 20 61 74 74 72 69 62 75 74 65 20 6f 6e 20 61  l attribute on a
9f30: 6e 20 58 45 6c 65 6d 65 6e 74 20 66 6f 72 20 58  n XElement for X
9f40: 44 6f 63 75 6d 65 6e 74 29 0d 0a 23 2e 44 65 73  Document)..#.Des
9f50: 63 72 69 70 74 69 6f 6e 0d 0a 23 20 20 54 68 69  cription..#  Thi
9f60: 73 20 69 73 20 74 68 65 20 77 6f 72 6b 2d 68 6f  s is the work-ho
9f70: 72 73 65 20 66 6f 72 20 74 68 65 20 58 4d 4c 20  rse for the XML 
9f80: 6d 69 6e 69 2d 64 73 6c 0d 0a 23 2e 50 61 72 61  mini-dsl..#.Para
9f90: 6d 65 74 65 72 20 6e 61 6d 65 0d 0a 23 20 20 20  meter name..#   
9fa0: 54 68 65 20 61 74 74 72 69 62 75 74 65 20 6e 61  The attribute na
9fb0: 6d 65 0d 0a 23 2e 50 61 72 61 6d 65 74 65 72 20  me..#.Parameter 
9fc0: 76 61 6c 75 65 0d 0a 23 20 20 54 68 65 20 61 74  value..#  The at
9fd0: 74 72 69 62 75 74 65 20 76 61 6c 75 65 0d 0a 5b  tribute value..[
9fe0: 43 6d 64 6c 65 74 42 69 6e 64 69 6e 67 28 29 5d  CmdletBinding()]
9ff0: 0d 0a 50 61 72 61 6d 28 5b 50 61 72 61 6d 65 74  ..Param([Paramet
a000: 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72  er(Mandatory=$tr
a010: 75 65 29 5d 24 6e 61 6d 65 2c 5b 50 61 72 61 6d  ue)]$name,[Param
a020: 65 74 65 72 28 4d 61 6e 64 61 74 6f 72 79 3d 24  eter(Mandatory=$
a030: 74 72 75 65 29 5d 24 76 61 6c 75 65 29 0d 0a 20  true)]$value).. 
a040: 20 20 4e 65 77 2d 4f 62 6a 65 63 74 20 58 41 74    New-Object XAt
a050: 74 72 69 62 75 74 65 20 24 6e 61 6d 65 2c 20 24  tribute $name, $
a060: 76 61 6c 75 65 0d 0a 7d 0d 0a 53 65 74 2d 41 6c  value..}..Set-Al
a070: 69 61 73 20 78 61 20 4e 65 77 2d 58 41 74 74 72  ias xa New-XAttr
a080: 69 62 75 74 65 20 2d 45 41 20 30 0d 0a 53 65 74  ibute -EA 0..Set
a090: 2d 41 6c 69 61 73 20 4e 65 77 2d 58 6d 6c 41 74  -Alias New-XmlAt
a0a0: 74 72 69 62 75 74 65 20 4e 65 77 2d 58 41 74 74  tribute New-XAtt
a0b0: 72 69 62 75 74 65 20 2d 45 41 20 30 0d 0a 0d 0a  ribute -EA 0....
a0c0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 4e 65 77 2d 58  ..function New-X
a0d0: 45 6c 65 6d 65 6e 74 20 7b 0d 0a 23 2e 53 79 6e  Element {..#.Syn
a0e0: 6f 70 73 79 73 0d 0a 23 20 20 20 43 72 65 61 74  opsys..#   Creat
a0f0: 65 73 20 61 20 6e 65 77 20 58 45 6c 65 6d 65 6e  es a new XElemen
a100: 74 20 28 61 6e 20 78 6d 6c 20 74 61 67 20 66 6f  t (an xml tag fo
a110: 72 20 58 44 6f 63 75 6d 65 6e 74 29 0d 0a 23 2e  r XDocument)..#.
a120: 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 23 20 20  Description..#  
a130: 54 68 69 73 20 69 73 20 74 68 65 20 77 6f 72 6b  This is the work
a140: 2d 68 6f 72 73 65 20 66 6f 72 20 74 68 65 20 58  -horse for the X
a150: 4d 4c 20 6d 69 6e 69 2d 64 73 6c 0d 0a 23 2e 50  ML mini-dsl..#.P
a160: 61 72 61 6d 65 74 65 72 20 74 61 67 0d 0a 23 20  arameter tag..# 
a170: 20 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68    The name of th
a180: 65 20 78 6d 6c 20 74 61 67 0d 0a 23 2e 50 61 72  e xml tag..#.Par
a190: 61 6d 65 74 65 72 20 61 72 67 73 0d 0a 23 20 20  ameter args..#  
a1a0: 20 74 68 69 73 20 69 73 20 77 68 65 72 65 20 61   this is where a
a1b0: 6c 6c 20 74 68 65 20 64 73 6c 20 6d 61 67 69 63  ll the dsl magic
a1c0: 20 68 61 70 70 65 6e 73 2e 20 50 6c 65 61 73 65   happens. Please
a1d0: 20 73 65 65 20 74 68 65 20 45 78 61 6d 70 6c 65   see the Example
a1e0: 73 2e 20 3a 29 0d 0a 5b 43 6d 64 6c 65 74 42 69  s. :)..[CmdletBi
a1f0: 6e 64 69 6e 67 28 29 5d 0d 0a 50 61 72 61 6d 28  nding()]..Param(
a200: 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  ..   [Parameter(
a210: 4d 61 6e 64 61 74 6f 72 79 20 3d 20 24 74 72 75  Mandatory = $tru
a220: 65 2c 20 50 6f 73 69 74 69 6f 6e 20 3d 20 30 29  e, Position = 0)
a230: 5d 0d 0a 20 20 20 5b 53 79 73 74 65 6d 2e 58 6d  ]..   [System.Xm
a240: 6c 2e 4c 69 6e 71 2e 58 4e 61 6d 65 5d 24 74 61  l.Linq.XName]$ta
a250: 67 0d 0a 2c 0d 0a 20 20 20 5b 41 6c 6c 6f 77 4e  g..,..   [AllowN
a260: 75 6c 6c 28 29 5d 5b 41 6c 6c 6f 77 45 6d 70 74  ull()][AllowEmpt
a270: 79 53 74 72 69 6e 67 28 29 5d 5b 41 6c 6c 6f 77  yString()][Allow
a280: 45 6d 70 74 79 43 6f 6c 6c 65 63 74 69 6f 6e 28  EmptyCollection(
a290: 29 5d 0d 0a 20 20 20 5b 50 61 72 61 6d 65 74 65  )]..   [Paramete
a2a0: 72 28 50 6f 73 69 74 69 6f 6e 3d 39 39 2c 20 4d  r(Position=99, M
a2b0: 61 6e 64 61 74 6f 72 79 20 3d 20 24 66 61 6c 73  andatory = $fals
a2c0: 65 2c 20 56 61 6c 75 65 46 72 6f 6d 52 65 6d 61  e, ValueFromRema
a2d0: 69 6e 69 6e 67 41 72 67 75 6d 65 6e 74 73 3d 24  iningArguments=$
a2e0: 74 72 75 65 29 5d 0d 0a 20 20 20 5b 50 53 4f 62  true)]..   [PSOb
a2f0: 6a 65 63 74 5b 5d 5d 24 61 72 67 73 0d 0a 29 0d  ject[]]$args..).
a300: 0a 50 52 4f 43 45 53 53 20 7b 0d 0a 20 20 4e 65  .PROCESS {..  Ne
a310: 77 2d 4f 62 6a 65 63 74 20 58 45 6c 65 6d 65 6e  w-Object XElemen
a320: 74 20 24 28 0d 0a 20 20 20 20 20 24 74 61 67 0d  t $(..     $tag.
a330: 0a 20 20 20 20 20 57 72 69 74 65 2d 56 65 72 62  .     Write-Verb
a340: 6f 73 65 20 22 4e 65 77 2d 58 45 6c 65 6d 65 6e  ose "New-XElemen
a350: 74 20 24 74 61 67 20 24 28 24 61 72 67 73 20 2d  t $tag $($args -
a360: 6a 6f 69 6e 20 27 2c 27 29 22 0d 0a 20 20 20 20  join ',')"..    
a370: 20 77 68 69 6c 65 28 24 61 72 67 73 29 20 7b 0d   while($args) {.
a380: 0a 20 20 20 20 20 20 20 20 24 61 74 74 72 69 62  .        $attrib
a390: 2c 20 24 76 61 6c 75 65 2c 20 24 61 72 67 73 20  , $value, $args 
a3a0: 3d 20 24 61 72 67 73 0d 0a 20 20 20 20 20 20 20  = $args..       
a3b0: 20 69 66 28 24 61 74 74 72 69 62 20 2d 69 73 20   if($attrib -is 
a3c0: 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5d 29 20 7b  [ScriptBlock]) {
a3d0: 20 23 20 74 68 65 6e 20 69 74 27 73 20 63 6f 6e   # then it's con
a3e0: 74 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20  tent..          
a3f0: 20 26 20 24 61 74 74 72 69 62 0d 0a 20 20 20 20   & $attrib..    
a400: 20 20 20 20 7d 20 65 6c 73 65 69 66 20 28 20 24      } elseif ( $
a410: 76 61 6c 75 65 20 2d 69 73 20 5b 53 63 72 69 70  value -is [Scrip
a420: 74 42 6c 6f 63 6b 5d 20 2d 61 6e 64 20 22 2d 43  tBlock] -and "-C
a430: 4f 4e 54 45 4e 54 22 2e 53 74 61 72 74 73 57 69  ONTENT".StartsWi
a440: 74 68 28 24 61 74 74 72 69 62 2e 54 72 69 6d 45  th($attrib.TrimE
a450: 6e 64 28 27 3a 27 29 2e 54 6f 55 70 70 65 72 28  nd(':').ToUpper(
a460: 29 29 29 20 7b 20 23 20 74 68 65 6e 20 69 74 27  ))) { # then it'
a470: 73 20 63 6f 6e 74 65 6e 74 0d 0a 20 20 20 20 20  s content..     
a480: 20 20 20 20 20 20 26 20 24 76 61 6c 75 65 0d 0a        & $value..
a490: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66          } elseif
a4a0: 20 28 20 24 76 61 6c 75 65 20 2d 69 73 20 5b 58   ( $value -is [X
a4b0: 4e 61 6d 65 73 70 61 63 65 5d 29 20 7b 0d 0a 20  Namespace]) {.. 
a4c0: 20 20 20 20 20 20 20 20 20 20 57 72 69 74 65 2d            Write-
a4d0: 56 65 72 62 6f 73 65 20 22 4e 65 77 20 58 41 74  Verbose "New XAt
a4e0: 74 72 69 62 75 74 65 20 78 6d 6c 6e 73 3a 20 24  tribute xmlns: $
a4f0: 28 24 61 74 74 72 69 62 2e 54 72 69 6d 53 74 61  ($attrib.TrimSta
a500: 72 74 28 22 2d 22 29 2e 54 72 69 6d 45 6e 64 28  rt("-").TrimEnd(
a510: 27 3a 27 29 29 20 3d 20 24 76 61 6c 75 65 22 0d  ':')) = $value".
a520: 0a 20 20 20 20 20 20 20 20 20 20 20 4e 65 77 2d  .           New-
a530: 4f 62 6a 65 63 74 20 58 41 74 74 72 69 62 75 74  Object XAttribut
a540: 65 20 28 5b 58 4e 61 6d 65 73 70 61 63 65 5d 3a  e ([XNamespace]:
a550: 3a 58 6d 6c 6e 73 20 2b 20 24 61 74 74 72 69 62  :Xmlns + $attrib
a560: 2e 54 72 69 6d 53 74 61 72 74 28 22 2d 22 29 2e  .TrimStart("-").
a570: 54 72 69 6d 45 6e 64 28 27 3a 27 29 29 2c 20 24  TrimEnd(':')), $
a580: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
a590: 20 20 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70    $script:NameSp
a5a0: 61 63 65 48 61 73 68 2e 41 64 64 28 24 61 74 74  aceHash.Add($att
a5b0: 72 69 62 2e 54 72 69 6d 53 74 61 72 74 28 22 2d  rib.TrimStart("-
a5c0: 22 29 2e 54 72 69 6d 45 6e 64 28 27 3a 27 29 2c  ").TrimEnd(':'),
a5d0: 20 24 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20   $value)..      
a5e0: 20 20 7d 20 65 6c 73 65 69 66 28 24 76 61 6c 75    } elseif($valu
a5f0: 65 20 2d 6d 61 74 63 68 20 22 5e 2d 28 3f 21 5c  e -match "^-(?!\
a600: 64 29 5c 77 22 29 20 7b 0d 0a 20 20 20 20 20 20  d)\w") {..      
a610: 20 20 20 20 20 20 24 61 72 67 73 20 3d 20 40 28        $args = @(
a620: 24 76 61 6c 75 65 29 2b 40 28 24 61 72 67 73 29  $value)+@($args)
a630: 0d 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65  ..        } else
a640: 69 66 28 24 76 61 6c 75 65 20 2d 6e 65 20 24 6e  if($value -ne $n
a650: 75 6c 6c 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ull) {..        
a660: 20 20 20 57 72 69 74 65 2d 56 65 72 62 6f 73 65     Write-Verbose
a670: 20 22 4e 65 77 20 58 41 74 74 72 69 62 75 74 65   "New XAttribute
a680: 20 24 28 24 61 74 74 72 69 62 2e 54 72 69 6d 53   $($attrib.TrimS
a690: 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d 45 6e  tart("-").TrimEn
a6a0: 64 28 27 3a 27 29 29 20 3d 20 24 76 61 6c 75 65  d(':')) = $value
a6b0: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 4e 65  "..           Ne
a6c0: 77 2d 4f 62 6a 65 63 74 20 58 41 74 74 72 69 62  w-Object XAttrib
a6d0: 75 74 65 20 24 61 74 74 72 69 62 2e 54 72 69 6d  ute $attrib.Trim
a6e0: 53 74 61 72 74 28 22 2d 22 29 2e 54 72 69 6d 45  Start("-").TrimE
a6f0: 6e 64 28 27 3a 27 29 2c 20 24 76 61 6c 75 65 0d  nd(':'), $value.
a700: 0a 20 20 20 20 20 20 20 20 7d 20 20 20 20 20 20  .        }      
a710: 20 20 0d 0a 20 20 20 20 20 7d 0d 0a 20 20 20 29    ..     }..   )
a720: 0d 0a 7d 0d 0a 7d 0d 0a 53 65 74 2d 41 6c 69 61  ..}..}..Set-Alia
a730: 73 20 78 65 20 4e 65 77 2d 58 45 6c 65 6d 65 6e  s xe New-XElemen
a740: 74 0d 0a 53 65 74 2d 41 6c 69 61 73 20 4e 65 77  t..Set-Alias New
a750: 2d 58 6d 6c 45 6c 65 6d 65 6e 74 20 4e 65 77 2d  -XmlElement New-
a760: 58 45 6c 65 6d 65 6e 74 0d 0a 0d 0a 66 75 6e 63  XElement....func
a770: 74 69 6f 6e 20 43 6f 6e 76 65 72 74 46 72 6f 6d  tion ConvertFrom
a780: 2d 58 6d 6c 44 73 6c 20 7b 0d 0a 50 61 72 61 6d  -XmlDsl {..Param
a790: 28 5b 53 63 72 69 70 74 42 6c 6f 63 6b 5d 24 73  ([ScriptBlock]$s
a7a0: 63 72 69 70 74 29 0d 0a 20 20 20 24 70 61 72 73  cript)..   $pars
a7b0: 65 72 72 6f 72 73 20 3d 20 24 6e 75 6c 6c 0d 0a  errors = $null..
a7c0: 20 20 20 24 67 6c 6f 62 61 6c 3a 74 6f 6b 65 6e     $global:token
a7d0: 73 20 3d 20 5b 50 53 50 61 72 73 65 72 5d 3a 3a  s = [PSParser]::
a7e0: 54 6f 6b 65 6e 69 7a 65 28 20 24 73 63 72 69 70  Tokenize( $scrip
a7f0: 74 2c 20 5b 72 65 66 5d 24 70 61 72 73 65 72 72  t, [ref]$parserr
a800: 6f 72 73 20 29 0d 0a 20 20 20 5b 41 72 72 61 79  ors )..   [Array
a810: 5d 24 64 75 64 73 20 3d 20 24 67 6c 6f 62 61 6c  ]$duds = $global
a820: 3a 74 6f 6b 65 6e 73 20 7c 20 57 68 65 72 65 2d  :tokens | Where-
a830: 4f 62 6a 65 63 74 20 7b 20 24 5f 2e 54 79 70 65  Object { $_.Type
a840: 20 2d 65 71 20 22 43 6f 6d 6d 61 6e 64 22 20 2d   -eq "Command" -
a850: 61 6e 64 20 21 24 5f 2e 43 6f 6e 74 65 6e 74 2e  and !$_.Content.
a860: 43 6f 6e 74 61 69 6e 73 28 27 2d 27 29 20 2d 61  Contains('-') -a
a870: 6e 64 20 28 24 28 47 65 74 2d 43 6f 6d 6d 61 6e  nd ($(Get-Comman
a880: 64 20 24 5f 2e 43 6f 6e 74 65 6e 74 20 2d 54 79  d $_.Content -Ty
a890: 70 65 20 43 6d 64 6c 65 74 2c 46 75 6e 63 74 69  pe Cmdlet,Functi
a8a0: 6f 6e 2c 45 78 74 65 72 6e 61 6c 53 63 72 69 70  on,ExternalScrip
a8b0: 74 20 2d 45 41 20 30 29 20 2d 65 71 20 24 4e 75  t -EA 0) -eq $Nu
a8c0: 6c 6c 29 20 7d 0d 0a 20 20 20 69 66 28 24 64 75  ll) }..   if($du
a8d0: 64 73 29 20 7b 0d 0a 09 20 20 20 5b 41 72 72 61  ds) {...   [Arra
a8e0: 79 5d 3a 3a 52 65 76 65 72 73 65 28 20 24 64 75  y]::Reverse( $du
a8f0: 64 73 20 29 0d 0a 20 20 20 7d 0d 0a 20 20 20 5b  ds )..   }..   [
a900: 73 74 72 69 6e 67 5b 5d 5d 24 53 63 72 69 70 74  string[]]$Script
a910: 54 65 78 74 20 3d 20 22 24 73 63 72 69 70 74 22  Text = "$script"
a920: 20 2d 73 70 6c 69 74 20 22 60 6e 22 0d 0a 0d 0a   -split "`n"....
a930: 20 20 20 46 6f 72 45 61 63 68 28 24 74 6f 6b 65     ForEach($toke
a940: 6e 20 69 6e 20 24 64 75 64 73 20 29 20 7b 0d 0a  n in $duds ) {..
a950: 09 20 20 23 20 72 65 70 6c 61 63 65 20 3a 20 6e  .  # replace : n
a960: 6f 74 61 74 69 6f 6e 20 77 69 74 68 20 6e 61 6d  otation with nam
a970: 65 73 70 61 63 65 20 6e 6f 74 61 74 69 6f 6e 0d  espace notation.
a980: 0a 09 20 20 69 66 28 20 24 74 6f 6b 65 6e 2e 43  ..  if( $token.C
a990: 6f 6e 74 65 6e 74 2e 43 6f 6e 74 61 69 6e 73 28  ontent.Contains(
a9a0: 22 3a 22 29 20 29 20 7b 0d 0a 09 09 20 24 6b 65  ":") ) {.... $ke
a9b0: 79 2c 20 24 6c 6f 63 61 6c 6e 61 6d 65 20 3d 20  y, $localname = 
a9c0: 24 74 6f 6b 65 6e 2e 43 6f 6e 74 65 6e 74 20 2d  $token.Content -
a9d0: 73 70 6c 69 74 20 22 3a 22 0d 0a 09 09 20 24 53  split ":".... $S
a9e0: 63 72 69 70 74 54 65 78 74 5b 28 24 74 6f 6b 65  criptText[($toke
a9f0: 6e 2e 53 74 61 72 74 4c 69 6e 65 20 2d 20 31 29  n.StartLine - 1)
aa00: 5d 20 3d 20 24 53 63 72 69 70 74 54 65 78 74 5b  ] = $ScriptText[
aa10: 28 24 74 6f 6b 65 6e 2e 53 74 61 72 74 4c 69 6e  ($token.StartLin
aa20: 65 20 2d 20 31 29 5d 2e 52 65 6d 6f 76 65 28 20  e - 1)].Remove( 
aa30: 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43 6f 6c 75  $token.StartColu
aa40: 6d 6e 20 2d 31 2c 20 24 74 6f 6b 65 6e 2e 4c 65  mn -1, $token.Le
aa50: 6e 67 74 68 20 29 2e 49 6e 73 65 72 74 28 20 24  ngth ).Insert( $
aa60: 74 6f 6b 65 6e 2e 53 74 61 72 74 43 6f 6c 75 6d  token.StartColum
aa70: 6e 20 2d 31 2c 20 22 27 22 20 2b 20 24 28 24 73  n -1, "'" + $($s
aa80: 63 72 69 70 74 3a 4e 61 6d 65 53 70 61 63 65 48  cript:NameSpaceH
aa90: 61 73 68 5b 24 6b 65 79 5d 20 2b 20 24 6c 6f 63  ash[$key] + $loc
aaa0: 61 6c 6e 61 6d 65 29 20 2b 20 22 27 22 20 29 0d  alname) + "'" ).
aab0: 0a 09 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 09 09  ..  } else {....
aac0: 20 24 53 63 72 69 70 74 54 65 78 74 5b 28 24 74   $ScriptText[($t
aad0: 6f 6b 65 6e 2e 53 74 61 72 74 4c 69 6e 65 20 2d  oken.StartLine -
aae0: 20 31 29 5d 20 3d 20 24 53 63 72 69 70 74 54 65   1)] = $ScriptTe
aaf0: 78 74 5b 28 24 74 6f 6b 65 6e 2e 53 74 61 72 74  xt[($token.Start
ab00: 4c 69 6e 65 20 2d 20 31 29 5d 2e 52 65 6d 6f 76  Line - 1)].Remov
ab10: 65 28 20 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43  e( $token.StartC
ab20: 6f 6c 75 6d 6e 20 2d 31 2c 20 24 74 6f 6b 65 6e  olumn -1, $token
ab30: 2e 4c 65 6e 67 74 68 20 29 2e 49 6e 73 65 72 74  .Length ).Insert
ab40: 28 20 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43 6f  ( $token.StartCo
ab50: 6c 75 6d 6e 20 2d 31 2c 20 22 27 22 20 2b 20 24  lumn -1, "'" + $
ab60: 28 24 73 63 72 69 70 74 3a 4e 61 6d 65 53 70 61  ($script:NameSpa
ab70: 63 65 48 61 73 68 5b 27 27 5d 20 2b 20 24 74 6f  ceHash[''] + $to
ab80: 6b 65 6e 2e 43 6f 6e 74 65 6e 74 29 20 2b 20 22  ken.Content) + "
ab90: 27 22 20 29 0d 0a 09 20 20 7d 0d 0a 09 20 20 23  '" )...  }...  #
aba0: 20 69 6e 73 65 72 74 20 27 78 65 27 20 62 65 66   insert 'xe' bef
abb0: 6f 72 65 20 65 76 65 72 79 74 68 69 6e 67 20 28  ore everything (
abc0: 75 6e 6c 65 73 73 20 69 74 27 73 20 61 20 76 61  unless it's a va
abd0: 6c 69 64 20 63 6f 6d 6d 61 6e 64 29 0d 0a 09 20  lid command)... 
abe0: 20 24 53 63 72 69 70 74 54 65 78 74 5b 28 24 74   $ScriptText[($t
abf0: 6f 6b 65 6e 2e 53 74 61 72 74 4c 69 6e 65 20 2d  oken.StartLine -
ac00: 20 31 29 5d 20 3d 20 24 53 63 72 69 70 74 54 65   1)] = $ScriptTe
ac10: 78 74 5b 28 24 74 6f 6b 65 6e 2e 53 74 61 72 74  xt[($token.Start
ac20: 4c 69 6e 65 20 2d 20 31 29 5d 2e 49 6e 73 65 72  Line - 1)].Inser
ac30: 74 28 20 24 74 6f 6b 65 6e 2e 53 74 61 72 74 43  t( $token.StartC
ac40: 6f 6c 75 6d 6e 20 2d 31 2c 20 22 78 65 20 22 20  olumn -1, "xe " 
ac50: 29 0d 0a 20 20 20 7d 0d 0a 20 20 20 57 72 69 74  )..   }..   Writ
ac60: 65 2d 4f 75 74 70 75 74 20 28 5b 53 63 72 69 70  e-Output ([Scrip
ac70: 74 42 6c 6f 63 6b 5d 3a 3a 43 72 65 61 74 65 28  tBlock]::Create(
ac80: 20 28 24 53 63 72 69 70 74 54 65 78 74 20 2d 6a   ($ScriptText -j
ac90: 6f 69 6e 20 22 60 6e 22 29 20 29 29 0d 0a 7d 0d  oin "`n") ))..}.
aca0: 0a 0d 0a 0d 0a 0d 0a 23 23 23 23 23 23 23 23 20  .......######## 
acb0: 58 61 6d 6c 0d 0a 23 20 20 69 66 28 24 50 53 56  Xaml..#  if($PSV
acc0: 65 72 73 69 6f 6e 54 61 62 6c 65 2e 43 4c 52 56  ersionTable.CLRV
acd0: 65 72 73 69 6f 6e 20 2d 67 65 20 22 34 2e 30 22  ersion -ge "4.0"
ace0: 29 7b 0d 0a 23 20 20 20 20 20 74 72 61 70 20 7b  ){..#     trap {
acf0: 20 63 6f 6e 74 69 6e 75 65 20 7d 0d 0a 23 20 20   continue }..#  
ad00: 20 20 20 5b 52 65 66 6c 65 63 74 69 6f 6e 2e 41     [Reflection.A
ad10: 73 73 65 6d 62 6c 79 5d 3a 3a 4c 6f 61 64 57 69  ssembly]::LoadWi
ad20: 74 68 50 61 72 74 69 61 6c 4e 61 6d 65 28 22 53  thPartialName("S
ad30: 79 73 74 65 6d 2e 58 61 6d 6c 22 29 20 7c 20 4f  ystem.Xaml") | O
ad40: 75 74 2d 4e 75 6c 6c 0d 0a 23 20 20 20 20 20 69  ut-Null..#     i
ad50: 66 28 22 53 79 73 74 65 6d 2e 58 61 6d 6c 2e 58  f("System.Xaml.X
ad60: 61 6d 6c 53 65 72 76 69 63 65 73 22 20 2d 61 73  amlServices" -as
ad70: 20 5b 74 79 70 65 5d 29 20 7b 0d 0a 20 20 20 20   [type]) {..    
ad80: 0d 0a 20 20 20 23 20 20 7d 0d 0a 23 20 20 7d 0d  ..   #  }..#  }.
ad90: 0a 20 20 20 0d 0a 45 78 70 6f 72 74 2d 4d 6f 64  .   ..Export-Mod
ada0: 75 6c 65 4d 65 6d 62 65 72 20 2d 61 6c 69 61 73  uleMember -alias
adb0: 20 2a 20 2d 66 75 6e 63 74 69 6f 6e 20 4e 65 77   * -function New
adc0: 2d 58 44 6f 63 75 6d 65 6e 74 2c 20 4e 65 77 2d  -XDocument, New-
add0: 58 41 74 74 72 69 62 75 74 65 2c 20 4e 65 77 2d  XAttribute, New-
ade0: 58 45 6c 65 6d 65 6e 74 2c 20 52 65 6d 6f 76 65  XElement, Remove
adf0: 2d 58 6d 6c 4e 61 6d 65 73 70 61 63 65 2c 20 52  -XmlNamespace, R
ae00: 65 6d 6f 76 65 2d 58 6d 6c 45 6c 65 6d 65 6e 74  emove-XmlElement
ae10: 2c 20 47 65 74 2d 4e 61 6d 65 73 70 61 63 65 2c  , Get-Namespace,
ae20: 20 47 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e 74 2c   Get-XmlContent,
ae30: 20 53 65 74 2d 58 6d 6c 43 6f 6e 74 65 6e 74 2c   Set-XmlContent,
ae40: 20 43 6f 6e 76 65 72 74 54 6f 2d 58 6d 6c 2c 20   ConvertTo-Xml, 
ae50: 53 65 6c 65 63 74 2d 58 6d 6c 2c 20 55 70 64 61  Select-Xml, Upda
ae60: 74 65 2d 58 6d 6c 2c 20 46 6f 72 6d 61 74 2d 58  te-Xml, Format-X
ae70: 6d 6c 2c 20 43 6f 6e 76 65 72 74 54 6f 2d 43 6c  ml, ConvertTo-Cl
ae80: 69 58 6d 6c 2c 20 43 6f 6e 76 65 72 74 46 72 6f  iXml, ConvertFro
ae90: 6d 2d 43 6c 69 58 6d 6c 0d 0a 0d 0a 23 20 53 49  m-CliXml....# SI
aea0: 47 20 23 20 42 65 67 69 6e 20 73 69 67 6e 61 74  G # Begin signat
aeb0: 75 72 65 20 62 6c 6f 63 6b 0d 0a 23 20 4d 49 49  ure block..# MII
aec0: 5a 45 77 59 4a 4b 6f 5a 49 68 76 63 4e 41 51 63  ZEwYJKoZIhvcNAQc
aed0: 43 6f 49 49 5a 42 44 43 43 47 51 41 43 41 51 45  CoIIZBDCCGQACAQE
aee0: 78 43 7a 41 4a 42 67 55 72 44 67 4d 43 47 67 55  xCzAJBgUrDgMCGgU
aef0: 41 4d 47 6b 47 43 69 73 47 41 51 51 42 0d 0a 23  AMGkGCisGAQQB..#
af00: 20 67 6a 63 43 41 51 53 67 57 7a 42 5a 4d 44 51   gjcCAQSgWzBZMDQ
af10: 47 43 69 73 47 41 51 51 42 67 6a 63 43 41 52 34  GCisGAQQBgjcCAR4
af20: 77 4a 67 49 44 41 51 41 41 42 42 41 66 7a 44 74  wJgIDAQAABBAfzDt
af30: 67 57 55 73 49 54 72 63 6b 30 73 59 70 66 76 4e  gWUsITrck0sYpfvN
af40: 52 0d 0a 23 20 41 67 45 41 41 67 45 41 41 67 45  R..# AgEAAgEAAgE
af50: 41 41 67 45 41 41 67 45 41 4d 43 45 77 43 51 59  AAgEAAgEAMCEwCQY
af60: 46 4b 77 34 44 41 68 6f 46 41 41 51 55 53 7a 70  FKw4DAhoFAAQUSzp
af70: 6b 2b 54 6a 49 47 51 68 6c 56 6f 45 42 4a 47 39  k+TjIGQhlVoEBJG9
af80: 65 56 6e 68 41 0d 0a 23 20 76 72 2b 67 67 68 54  eVnhA..# vr+gghT
af90: 52 4d 49 49 44 6e 7a 43 43 41 6f 65 67 41 77 49  RMIIDnzCCAoegAwI
afa0: 42 41 67 49 51 65 61 4b 6c 68 66 6e 52 46 55 49  BAgIQeaKlhfnRFUI
afb0: 54 32 62 67 2b 39 72 61 4e 37 54 41 4e 42 67 6b  T2bg+9raN7TANBgk
afc0: 71 68 6b 69 47 39 77 30 42 0d 0a 23 20 41 51 55  qhkiG9w0B..# AQU
afd0: 46 41 44 42 54 4d 51 73 77 43 51 59 44 56 51 51  FADBTMQswCQYDVQQ
afe0: 47 45 77 4a 56 55 7a 45 58 4d 42 55 47 41 31 55  GEwJVUzEXMBUGA1U
aff0: 45 43 68 4d 4f 56 6d 56 79 61 56 4e 70 5a 32 34  EChMOVmVyaVNpZ24
b000: 73 49 45 6c 75 59 79 34 78 4b 7a 41 70 0d 0a 23  sIEluYy4xKzAp..#
b010: 20 42 67 4e 56 42 41 4d 54 49 6c 5a 6c 63 6d 6c   BgNVBAMTIlZlcml
b020: 54 61 57 64 75 49 46 52 70 62 57 55 67 55 33 52  TaWduIFRpbWUgU3R
b030: 68 62 58 42 70 62 6d 63 67 55 32 56 79 64 6d 6c  hbXBpbmcgU2Vydml
b040: 6a 5a 58 4d 67 51 30 45 77 48 68 63 4e 4d 54 49  jZXMgQ0EwHhcNMTI
b050: 77 0d 0a 23 20 4e 54 41 78 4d 44 41 77 4d 44 41  w..# NTAxMDAwMDA
b060: 77 57 68 63 4e 4d 54 49 78 4d 6a 4d 78 4d 6a 4d  wWhcNMTIxMjMxMjM
b070: 31 4f 54 55 35 57 6a 42 69 4d 51 73 77 43 51 59  1OTU5WjBiMQswCQY
b080: 44 56 51 51 47 45 77 4a 56 55 7a 45 64 4d 42 73  DVQQGEwJVUzEdMBs
b090: 47 41 31 55 45 0d 0a 23 20 43 68 4d 55 55 33 6c  GA1UE..# ChMUU3l
b0a0: 74 59 57 35 30 5a 57 4d 67 51 32 39 79 63 47 39  tYW50ZWMgQ29ycG9
b0b0: 79 59 58 52 70 62 32 34 78 4e 44 41 79 42 67 4e  yYXRpb24xNDAyBgN
b0c0: 56 42 41 4d 54 4b 31 4e 35 62 57 46 75 64 47 56  VBAMTK1N5bWFudGV
b0d0: 6a 49 46 52 70 62 57 55 67 0d 0a 23 20 55 33 52  jIFRpbWUg..# U3R
b0e0: 68 62 58 42 70 62 6d 63 67 55 32 56 79 64 6d 6c  hbXBpbmcgU2Vydml
b0f0: 6a 5a 58 4d 67 55 32 6c 6e 62 6d 56 79 49 43 30  jZXMgU2lnbmVyIC0
b100: 67 52 7a 4d 77 67 5a 38 77 44 51 59 4a 4b 6f 5a  gRzMwgZ8wDQYJKoZ
b110: 49 68 76 63 4e 41 51 45 42 42 51 41 44 0d 0a 23  IhvcNAQEBBQAD..#
b120: 20 67 59 30 41 4d 49 47 4a 41 6f 47 42 41 4b 6c   gY0AMIGJAoGBAKl
b130: 5a 5a 6e 54 61 50 59 70 39 65 74 6a 38 39 59 42  ZZnTaPYp9etj89YB
b140: 45 65 2f 35 48 61 68 52 56 54 6c 42 48 43 2b 7a  Ee/5HahRVTlBHC+z
b150: 54 37 63 37 32 4f 50 64 50 61 62 6d 78 38 4c 5a  T7c72OPdPabmx8LZ
b160: 34 0d 0a 23 20 67 67 71 4d 64 68 5a 6e 34 67 4b  4..# ggqMdhZn4gK
b170: 74 74 77 32 6c 69 76 59 44 2f 47 62 54 2f 41 67  ttw2livYD/GbT/Ag
b180: 74 7a 4c 56 7a 57 58 75 4a 33 44 4e 75 5a 6c 70  tzLVzWXuJ3DNuZlp
b190: 65 55 6a 65 30 59 74 47 53 57 54 55 55 69 30 57  eUje0YtGSWTUUi0W
b1a0: 73 57 62 4a 4e 0d 0a 23 20 4a 4b 4b 59 6c 47 68  sWbJN..# JKKYlGh
b1b0: 43 63 70 38 36 61 4f 4a 72 69 35 34 69 4c 66 53  Ccp86aOJri54iLfS
b1c0: 59 54 70 72 47 72 37 50 6b 6f 4b 73 38 4b 4c 38  YTprGr7PkoKs8KL8
b1d0: 6a 34 64 64 79 70 50 49 51 55 32 65 75 64 36 39  j4ddypPIQU2eud69
b1e0: 52 41 67 4d 42 41 41 47 6a 0d 0a 23 20 67 65 4d  RAgMBAAGj..# geM
b1f0: 77 67 65 41 77 44 41 59 44 56 52 30 54 41 51 48  wgeAwDAYDVR0TAQH
b200: 2f 42 41 49 77 41 44 41 7a 42 67 4e 56 48 52 38  /BAIwADAzBgNVHR8
b210: 45 4c 44 41 71 4d 43 69 67 4a 71 41 6b 68 69 4a  ELDAqMCigJqAkhiJ
b220: 6f 64 48 52 77 4f 69 38 76 59 33 4a 73 0d 0a 23  odHRwOi8vY3Js..#
b230: 20 4c 6e 5a 6c 63 6d 6c 7a 61 57 64 75 4c 6d 4e   LnZlcmlzaWduLmN
b240: 76 62 53 39 30 63 33 4d 74 59 32 45 75 59 33 4a  vbS90c3MtY2EuY3J
b250: 73 4d 42 59 47 41 31 55 64 4a 51 45 42 2f 77 51  sMBYGA1UdJQEB/wQ
b260: 4d 4d 41 6f 47 43 43 73 47 41 51 55 46 42 77 4d  MMAoGCCsGAQUFBwM
b270: 49 0d 0a 23 20 4d 44 51 47 43 43 73 47 41 51 55  I..# MDQGCCsGAQU
b280: 46 42 77 45 42 42 43 67 77 4a 6a 41 6b 42 67 67  FBwEBBCgwJjAkBgg
b290: 72 42 67 45 46 42 51 63 77 41 59 59 59 61 48 52  rBgEFBQcwAYYYaHR
b2a0: 30 63 44 6f 76 4c 32 39 6a 63 33 41 75 64 6d 56  0cDovL29jc3AudmV
b2b0: 79 61 58 4e 70 0d 0a 23 20 5a 32 34 75 59 32 39  yaXNp..# Z24uY29
b2c0: 74 4d 41 34 47 41 31 55 64 44 77 45 42 2f 77 51  tMA4GA1UdDwEB/wQ
b2d0: 45 41 77 49 48 67 44 41 65 42 67 4e 56 48 52 45  EAwIHgDAeBgNVHRE
b2e0: 45 46 7a 41 56 70 42 4d 77 45 54 45 50 4d 41 30  EFzAVpBMwETEPMA0
b2f0: 47 41 31 55 45 41 78 4d 47 0d 0a 23 20 56 46 4e  GA1UEAxMG..# VFN
b300: 42 4d 53 30 7a 4d 42 30 47 41 31 55 64 44 67 51  BMS0zMB0GA1UdDgQ
b310: 57 42 42 53 30 74 2f 47 4a 53 53 5a 67 35 32 58  WBBS0t/GJSSZg52X
b320: 71 63 36 37 63 30 7a 6a 4e 76 31 65 53 62 7a 41  qc67c0zjNv1eSbzA
b330: 4e 42 67 6b 71 68 6b 69 47 39 77 30 42 0d 0a 23  NBgkqhkiG9w0B..#
b340: 20 41 51 55 46 41 41 4f 43 41 51 45 41 48 70 69   AQUFAAOCAQEAHpi
b350: 71 4a 37 64 34 74 51 69 31 79 58 4a 74 74 39 2f  qJ7d4tQi1yXJtt9/
b360: 41 44 70 69 6d 4e 63 53 49 79 64 4c 32 62 66 46  ADpimNcSIydL2bfF
b370: 4c 47 76 76 56 2b 53 32 5a 41 4a 37 52 35 35 75  LGvvV+S2ZAJ7R55u
b380: 4c 0d 0a 23 20 34 54 2b 39 4f 59 41 4d 5a 73 30  L..# 4T+9OYAMZs0
b390: 48 76 46 79 59 56 4b 61 55 75 68 44 52 54 6f 75  HvFyYVKaUuhDRTou
b3a0: 72 39 57 39 6c 7a 47 63 4a 6f 6f 42 38 55 75 67  r9W9lzGcJooB8Uug
b3b0: 4f 41 39 5a 72 65 73 59 46 47 4f 7a 49 72 45 4a  OA9ZresYFGOzIrEJ
b3c0: 38 42 79 79 6e 0d 0a 23 20 50 51 68 6d 33 41 44  8Byyn..# PQhm3AD
b3d0: 74 2f 5a 51 64 63 2f 4a 79 6d 4a 4f 78 45 64 61  t/ZQdc/JymJOxEda
b3e0: 50 37 34 37 71 72 50 53 57 55 51 7a 51 6a 64 38  P747qrPSWUQzQjd8
b3f0: 78 55 6b 39 65 72 33 32 6e 53 6e 58 6d 54 73 34  xUk9er32nSnXmTs4
b400: 72 6e 79 6b 72 35 38 39 64 0d 0a 23 20 6e 77 4e  rnykr589d..# nwN
b410: 2b 62 69 64 37 49 36 31 69 4b 57 61 76 6b 75 67  +bid7I61iKWavkug
b420: 73 7a 72 32 63 66 39 7a 4e 46 7a 78 44 77 67 6b  szr2cf9zNFzxDwgk
b430: 2f 64 55 58 48 6e 75 54 58 59 48 2b 58 78 75 53  /dUXHnuTXYH+XxuS
b440: 71 78 32 6e 31 2f 4d 31 30 72 43 79 77 0d 0a 23  qx2n1/M10rCyw..#
b450: 20 53 4d 46 51 54 6e 42 57 48 72 55 31 30 34 36   SMFQTnBWHrU1046
b460: 2b 73 65 32 73 76 66 34 4d 37 49 56 39 31 62 75  +se2svf4M7IV91bu
b470: 46 5a 6b 51 5a 58 5a 2b 54 36 34 4b 36 59 35 37  FZkQZXZ+T64K6Y57
b480: 54 66 47 48 2f 79 42 76 5a 49 31 68 2f 4d 4b 4e  TfGH/yBvZI1h/MKN
b490: 6d 0d 0a 23 20 6f 54 6b 6d 58 70 4c 44 50 4d 73  m..# oTkmXpLDPMs
b4a0: 33 4d 76 72 31 6f 34 33 63 31 62 43 6a 36 53 55  3Mvr1o43c1bCj6SU
b4b0: 32 56 64 65 42 2b 6a 43 43 41 38 51 77 67 67 4d  2VdeB+jCCA8QwggM
b4c0: 74 6f 41 4d 43 41 51 49 43 45 45 65 2f 47 5a 58  toAMCAQICEEe/GZX
b4d0: 66 6a 56 4a 47 0d 0a 23 20 51 2f 66 62 62 55 67  fjVJG..# Q/fbbUg
b4e0: 4e 4d 61 51 77 44 51 59 4a 4b 6f 5a 49 68 76 63  NMaQwDQYJKoZIhvc
b4f0: 4e 41 51 45 46 42 51 41 77 67 59 73 78 43 7a 41  NAQEFBQAwgYsxCzA
b500: 4a 42 67 4e 56 42 41 59 54 41 6c 70 42 4d 52 55  JBgNVBAYTAlpBMRU
b510: 77 45 77 59 44 56 51 51 49 0d 0a 23 20 45 77 78  wEwYDVQQI..# Ewx
b520: 58 5a 58 4e 30 5a 58 4a 75 49 45 4e 68 63 47 55  XZXN0ZXJuIENhcGU
b530: 78 46 44 41 53 42 67 4e 56 42 41 63 54 43 30 52  xFDASBgNVBAcTC0R
b540: 31 63 6d 4a 68 62 6e 5a 70 62 47 78 6c 4d 51 38  1cmJhbnZpbGxlMQ8
b550: 77 44 51 59 44 56 51 51 4b 45 77 5a 55 0d 0a 23  wDQYDVQQKEwZU..#
b560: 20 61 47 46 33 64 47 55 78 48 54 41 62 42 67 4e   aGF3dGUxHTAbBgN
b570: 56 42 41 73 54 46 46 52 6f 59 58 64 30 5a 53 42  VBAsTFFRoYXd0ZSB
b580: 44 5a 58 4a 30 61 57 5a 70 59 32 46 30 61 57 39  DZXJ0aWZpY2F0aW9
b590: 75 4d 52 38 77 48 51 59 44 56 51 51 44 45 78 5a  uMR8wHQYDVQQDExZ
b5a0: 55 0d 0a 23 20 61 47 46 33 64 47 55 67 56 47 6c  U..# aGF3dGUgVGl
b5b0: 74 5a 58 4e 30 59 57 31 77 61 57 35 6e 49 45 4e  tZXN0YW1waW5nIEN
b5c0: 42 4d 42 34 58 44 54 41 7a 4d 54 49 77 4e 44 41  BMB4XDTAzMTIwNDA
b5d0: 77 4d 44 41 77 4d 46 6f 58 44 54 45 7a 4d 54 49  wMDAwMFoXDTEzMTI
b5e0: 77 4d 7a 49 7a 0d 0a 23 20 4e 54 6b 31 4f 56 6f  wMzIz..# NTk1OVo
b5f0: 77 55 7a 45 4c 4d 41 6b 47 41 31 55 45 42 68 4d  wUzELMAkGA1UEBhM
b600: 43 56 56 4d 78 46 7a 41 56 42 67 4e 56 42 41 6f  CVVMxFzAVBgNVBAo
b610: 54 44 6c 5a 6c 63 6d 6c 54 61 57 64 75 4c 43 42  TDlZlcmlTaWduLCB
b620: 4a 62 6d 4d 75 4d 53 73 77 0d 0a 23 20 4b 51 59  JbmMuMSsw..# KQY
b630: 44 56 51 51 44 45 79 4a 57 5a 58 4a 70 55 32 6c  DVQQDEyJWZXJpU2l
b640: 6e 62 69 42 55 61 57 31 6c 49 46 4e 30 59 57 31  nbiBUaW1lIFN0YW1
b650: 77 61 57 35 6e 49 46 4e 6c 63 6e 5a 70 59 32 56  waW5nIFNlcnZpY2V
b660: 7a 49 45 4e 42 4d 49 49 42 49 6a 41 4e 0d 0a 23  zIENBMIIBIjAN..#
b670: 20 42 67 6b 71 68 6b 69 47 39 77 30 42 41 51 45   BgkqhkiG9w0BAQE
b680: 46 41 41 4f 43 41 51 38 41 4d 49 49 42 43 67 4b  FAAOCAQ8AMIIBCgK
b690: 43 41 51 45 41 71 63 71 79 70 4d 7a 4e 49 4b 38  CAQEAqcqypMzNIK8
b6a0: 4b 66 59 6d 73 68 33 58 77 74 45 37 78 33 38 45  KfYmsh3XwtE7x38E
b6b0: 50 0d 0a 23 20 76 32 64 68 76 61 4e 6b 48 4e 71  P..# v2dhvaNkHNq
b6c0: 37 2b 63 6f 7a 71 34 51 77 69 56 68 2b 6a 4e 74  7+cozq4QwiVh+jNt
b6d0: 72 33 54 61 65 44 37 2f 52 37 48 6a 79 64 36 5a  r3TaeD7/R7Hjyd6Z
b6e0: 2b 62 7a 79 2f 6b 36 38 4e 75 6d 6a 30 62 4a 54  +bzy/k68Numj0bJT
b6f0: 4b 76 56 49 74 0d 0a 23 20 71 30 67 39 39 62 62  KvVIt..# q0g99bb
b700: 56 58 56 38 62 41 70 2f 36 4c 32 73 65 70 50 65  VXV8bAp/6L2sepPe
b710: 6a 6d 71 59 61 79 41 4c 68 66 30 78 53 34 77 35  jmqYayALhf0xS4w5
b720: 67 37 45 41 63 66 72 6b 4e 33 6a 2f 48 74 4e 2b  g7EAcfrkN3j/HtN+
b730: 48 76 56 39 36 61 6a 45 75 0d 0a 23 20 41 35 6d  HvV96ajEu..# A5m
b740: 42 45 36 68 48 49 4d 34 78 63 77 31 58 4c 63 31  BE6hHIM4xcw1XLc1
b750: 34 4e 44 4f 56 45 70 6b 53 75 64 35 6f 4c 36 72  4NDOVEpkSud5oL6r
b760: 6d 34 38 4b 4b 6a 43 72 44 69 79 47 48 5a 72 32  m48KKjCrDiyGHZr2
b770: 44 57 46 64 76 64 62 38 38 71 69 61 48 0d 0a 23  DWFdvdb88qiaH..#
b780: 20 58 63 6f 51 46 54 79 66 68 4f 70 55 77 51 70   XcoQFTyfhOpUwQp
b790: 75 78 50 37 46 53 74 32 35 42 78 47 58 49 6e 7a  uxP7FSt25BxGXInz
b7a0: 62 50 69 66 52 48 6e 6a 73 6e 7a 48 4a 38 65 59  bPifRHnjsnzHJ8eY
b7b0: 69 47 64 76 45 73 30 64 44 6d 68 70 66 6f 42 36  iGdvEs0dDmhpfoB6
b7c0: 51 0d 0a 23 20 35 46 37 31 37 6e 7a 78 66 61 74  Q..# 5F717nzxfat
b7d0: 69 41 59 2f 31 54 51 76 65 30 43 4a 57 71 4a 58  iAY/1TQve0CJWqJX
b7e0: 4e 72 6f 68 32 72 75 36 36 44 66 50 6b 54 64 6d  Nroh2ru66DfPkTdm
b7f0: 67 2b 32 69 67 72 68 51 37 73 34 66 42 75 77 49  g+2igrhQ7s4fBuwI
b800: 44 41 51 41 42 0d 0a 23 20 6f 34 48 62 4d 49 48  DAQAB..# o4HbMIH
b810: 59 4d 44 51 47 43 43 73 47 41 51 55 46 42 77 45  YMDQGCCsGAQUFBwE
b820: 42 42 43 67 77 4a 6a 41 6b 42 67 67 72 42 67 45  BBCgwJjAkBggrBgE
b830: 46 42 51 63 77 41 59 59 59 61 48 52 30 63 44 6f  FBQcwAYYYaHR0cDo
b840: 76 4c 32 39 6a 63 33 41 75 0d 0a 23 20 64 6d 56  vL29jc3Au..# dmV
b850: 79 61 58 4e 70 5a 32 34 75 59 32 39 74 4d 42 49  yaXNpZ24uY29tMBI
b860: 47 41 31 55 64 45 77 45 42 2f 77 51 49 4d 41 59  GA1UdEwEB/wQIMAY
b870: 42 41 66 38 43 41 51 41 77 51 51 59 44 56 52 30  BAf8CAQAwQQYDVR0
b880: 66 42 44 6f 77 4f 44 41 32 6f 44 53 67 0d 0a 23  fBDowODA2oDSg..#
b890: 20 4d 6f 59 77 61 48 52 30 63 44 6f 76 4c 32 4e   MoYwaHR0cDovL2N
b8a0: 79 62 43 35 32 5a 58 4a 70 63 32 6c 6e 62 69 35  ybC52ZXJpc2lnbi5
b8b0: 6a 62 32 30 76 56 47 68 68 64 33 52 6c 56 47 6c  jb20vVGhhd3RlVGl
b8c0: 74 5a 58 4e 30 59 57 31 77 61 57 35 6e 51 30 45  tZXN0YW1waW5nQ0E
b8d0: 75 0d 0a 23 20 59 33 4a 73 4d 42 4d 47 41 31 55  u..# Y3JsMBMGA1U
b8e0: 64 4a 51 51 4d 4d 41 6f 47 43 43 73 47 41 51 55  dJQQMMAoGCCsGAQU
b8f0: 46 42 77 4d 49 4d 41 34 47 41 31 55 64 44 77 45  FBwMIMA4GA1UdDwE
b900: 42 2f 77 51 45 41 77 49 42 42 6a 41 6b 42 67 4e  B/wQEAwIBBjAkBgN
b910: 56 48 52 45 45 0d 0a 23 20 48 54 41 62 70 42 6b  VHREE..# HTAbpBk
b920: 77 46 7a 45 56 4d 42 4d 47 41 31 55 45 41 78 4d  wFzEVMBMGA1UEAxM
b930: 4d 56 46 4e 42 4d 6a 41 30 4f 43 30 78 4c 54 55  MVFNBMjA0OC0xLTU
b940: 7a 4d 41 30 47 43 53 71 47 53 49 62 33 44 51 45  zMA0GCSqGSIb3DQE
b950: 42 42 51 55 41 41 34 47 42 0d 0a 23 20 41 45 70  BBQUAA4GB..# AEp
b960: 72 2b 65 70 59 77 6b 51 63 4d 59 6c 35 6d 53 75  r+epYwkQcMYl5mSu
b970: 57 76 34 4b 73 41 64 59 63 54 4d 32 77 69 6c 68  Wv4KsAdYcTM2wilh
b980: 75 33 77 67 70 6f 31 37 49 79 70 4d 54 35 77 52  u3wgpo17IypMT5wR
b990: 53 44 65 39 48 4a 79 38 41 4f 4c 44 6b 0d 0a 23  SDe9HJy8AOLDk..#
b9a0: 20 79 5a 4e 4f 6d 74 51 69 59 68 58 33 50 7a 63   yZNOmtQiYhX3Pzc
b9b0: 68 54 33 41 78 67 50 47 4c 4f 49 65 7a 36 4f 69  hT3AxgPGLOIez6Oi
b9c0: 58 41 50 37 50 56 5a 5a 4f 4a 4e 4b 70 4a 30 35  XAP7PVZZOJNKpJ05
b9d0: 36 72 72 64 68 51 66 4d 71 7a 75 66 4a 32 56 37  6rrdhQfMqzufJ2V7
b9e0: 64 0d 0a 23 20 75 79 75 46 50 72 57 64 74 64 6e  d..# uyuFPrWdtdn
b9f0: 68 56 2f 2b 2b 74 4d 56 2b 39 63 38 4d 6e 76 43  hV/++tMV+9c8MnvC
ba00: 58 2f 69 76 54 4f 31 49 62 47 7a 67 6e 39 7a 39  X/ivTO1IbGzgn9z9
ba10: 4b 4d 49 49 47 6e 7a 43 43 42 59 65 67 41 77 49  KMIIGnzCCBYegAwI
ba20: 42 41 67 49 51 0d 0a 23 20 44 6d 6b 47 6d 4d 49  BAgIQ..# DmkGmMI
ba30: 55 79 48 71 31 74 67 53 35 46 6a 7a 52 6b 44 41  UyHq1tgS5FjzRkDA
ba40: 4e 42 67 6b 71 68 6b 69 47 39 77 30 42 41 51 55  NBgkqhkiG9w0BAQU
ba50: 46 41 44 42 7a 4d 51 73 77 43 51 59 44 56 51 51  FADBzMQswCQYDVQQ
ba60: 47 45 77 4a 56 55 7a 45 56 0d 0a 23 20 4d 42 4d  GEwJVUzEV..# MBM
ba70: 47 41 31 55 45 43 68 4d 4d 52 47 6c 6e 61 55 4e  GA1UEChMMRGlnaUN
ba80: 6c 63 6e 51 67 53 57 35 6a 4d 52 6b 77 46 77 59  lcnQgSW5jMRkwFwY
ba90: 44 56 51 51 4c 45 78 42 33 64 33 63 75 5a 47 6c  DVQQLExB3d3cuZGl
baa0: 6e 61 57 4e 6c 63 6e 51 75 59 32 39 74 0d 0a 23  naWNlcnQuY29t..#
bab0: 20 4d 54 49 77 4d 41 59 44 56 51 51 44 45 79 6c   MTIwMAYDVQQDEyl
bac0: 45 61 57 64 70 51 32 56 79 64 43 42 49 61 57 64  EaWdpQ2VydCBIaWd
bad0: 6f 49 45 46 7a 63 33 56 79 59 57 35 6a 5a 53 42  oIEFzc3VyYW5jZSB
bae0: 44 62 32 52 6c 49 46 4e 70 5a 32 35 70 62 6d 63  Db2RlIFNpZ25pbmc
baf0: 67 0d 0a 23 20 51 30 45 74 4d 54 41 65 46 77 30  g..# Q0EtMTAeFw0
bb00: 78 4d 6a 41 7a 4d 6a 41 77 4d 44 41 77 4d 44 42  xMjAzMjAwMDAwMDB
bb10: 61 46 77 30 78 4d 7a 41 7a 4d 6a 49 78 4d 6a 41  aFw0xMzAzMjIxMjA
bb20: 77 4d 44 42 61 4d 47 30 78 43 7a 41 4a 42 67 4e  wMDBaMG0xCzAJBgN
bb30: 56 42 41 59 54 0d 0a 23 20 41 6c 56 54 4d 52 45  VBAYT..# AlVTMRE
bb40: 77 44 77 59 44 56 51 51 49 45 77 68 4f 5a 58 63  wDwYDVQQIEwhOZXc
bb50: 67 57 57 39 79 61 7a 45 58 4d 42 55 47 41 31 55  gWW9yazEXMBUGA1U
bb60: 45 42 78 4d 4f 56 32 56 7a 64 43 42 49 5a 57 35  EBxMOV2VzdCBIZW5
bb70: 79 61 57 56 30 64 47 45 78 0d 0a 23 20 47 44 41  yaWV0dGEx..# GDA
bb80: 57 42 67 4e 56 42 41 6f 54 44 30 70 76 5a 57 77  WBgNVBAoTD0pvZWw
bb90: 67 53 43 34 67 51 6d 56 75 62 6d 56 30 64 44 45  gSC4gQmVubmV0dDE
bba0: 59 4d 42 59 47 41 31 55 45 41 78 4d 50 53 6d 39  YMBYGA1UEAxMPSm9
bbb0: 6c 62 43 42 49 4c 69 42 43 5a 57 35 75 0d 0a 23  lbCBILiBCZW5u..#
bbc0: 20 5a 58 52 30 4d 49 49 42 49 6a 41 4e 42 67 6b   ZXR0MIIBIjANBgk
bbd0: 71 68 6b 69 47 39 77 30 42 41 51 45 46 41 41 4f  qhkiG9w0BAQEFAAO
bbe0: 43 41 51 38 41 4d 49 49 42 43 67 4b 43 41 51 45  CAQ8AMIIBCgKCAQE
bbf0: 41 32 6f 67 47 41 47 38 39 64 31 6a 4d 66 52 4a  A2ogGAG89d1jMfRJ
bc00: 76 0d 0a 23 20 32 64 33 55 31 6c 43 73 57 38 6f  v..# 2d3U1lCsW8o
bc10: 6b 37 47 6b 6a 6e 4c 59 44 6e 30 7a 43 31 41 4c  k7GkjnLYDn0zC1AL
bc20: 71 31 31 72 57 4e 35 4e 56 77 56 62 6e 31 33 33  q11rWN5NVwVbn133
bc30: 69 2b 4b 56 30 4f 38 6b 4d 35 76 64 32 4d 37 78  i+KV0O8kM5vd2M7x
bc40: 45 38 43 6e 56 0d 0a 23 20 41 67 79 62 6a 6b 72  E8CnV..# Agybjkr
bc50: 76 52 44 32 49 71 4d 74 70 34 53 72 77 51 75 69  vRD2IqMtp4SrwQui
bc60: 47 69 56 47 73 4e 56 57 4f 33 76 53 4c 48 63 57  GiVGsNVWO3vSLHcW
bc70: 73 53 2f 49 37 4e 30 55 49 70 53 35 50 68 54 75  sS/I7N0UIpS5PhTu
bc80: 46 42 34 50 63 4f 79 2f 4d 0d 0a 23 20 48 52 34  FB4PcOy/M..# HR4
bc90: 46 32 67 36 4a 4c 4d 72 41 74 6b 70 59 57 78 61  F2g6JLMrAtkpYWxa
bca0: 75 41 46 5a 66 46 77 75 45 66 6d 36 76 71 57 6f  uAFZfFwuEfm6vqWo
bcb0: 62 48 54 44 74 35 77 47 2b 7a 71 4f 54 78 4d 53  bHTDt5wG+zqOTxMS
bcc0: 69 31 55 76 4c 35 66 45 4d 44 6f 65 6a 0d 0a 23  i1UvL5fEMDoej..#
bcd0: 20 47 71 71 72 69 49 78 35 6d 4b 44 7a 72 76 55   GqqriIx5mKDzrvU
bce0: 62 2f 41 4c 4e 4b 5a 31 72 47 50 57 6c 54 37 4f  b/ALNKZ1rGPWlT7O
bcf0: 30 2f 55 48 72 56 35 56 75 4f 66 67 69 6a 34 58  0/UHrV5VuOfgij4X
bd00: 56 4b 42 41 64 63 67 39 4a 4c 78 6b 79 41 45 49  VKBAdcg9JLxkyAEI
bd10: 4a 0d 0a 23 20 2b 56 76 56 51 32 4a 6e 33 6c 56  J..# +VvVQ2Jn3lV
bd20: 4f 4e 43 43 48 62 66 75 35 49 56 68 64 64 4d 72  ONCCHbfu5IVhddMr
bd30: 75 38 31 55 2f 76 35 57 72 6a 38 30 5a 72 77 68  u81U/v5Wrj80Zrwh
bd40: 32 54 48 32 35 71 6c 63 6c 55 4b 72 36 65 58 52  2TH25qlclUKr6eXR
bd50: 4c 74 50 2b 78 0d 0a 23 20 46 6d 32 33 43 77 49  LtP+x..# Fm23CwI
bd60: 44 41 51 41 42 6f 34 49 44 4d 7a 43 43 41 79 38  DAQABo4IDMzCCAy8
bd70: 77 48 77 59 44 56 52 30 6a 42 42 67 77 46 6f 41  wHwYDVR0jBBgwFoA
bd80: 55 6c 30 67 44 36 78 55 49 61 37 6d 79 57 43 50  Ul0gD6xUIa7myWCP
bd90: 4d 6c 43 37 78 78 6d 58 53 0d 0a 23 20 5a 49 34  MlC7xxmXS..# ZI4
bda0: 77 48 51 59 44 56 52 30 4f 42 42 59 45 46 4a 69  wHQYDVR0OBBYEFJi
bdb0: 63 52 4b 71 2f 58 73 42 57 52 75 4b 7a 55 36 65  cRKq/XsBWRuKzU6e
bdc0: 54 55 43 42 43 43 55 36 35 4d 41 34 47 41 31 55  TUCBCCU65MA4GA1U
bdd0: 64 44 77 45 42 2f 77 51 45 41 77 49 48 0d 0a 23  dDwEB/wQEAwIH..#
bde0: 20 67 44 41 54 42 67 4e 56 48 53 55 45 44 44 41   gDATBgNVHSUEDDA
bdf0: 4b 42 67 67 72 42 67 45 46 42 51 63 44 41 7a 42  KBggrBgEFBQcDAzB
be00: 70 42 67 4e 56 48 52 38 45 59 6a 42 67 4d 43 36  pBgNVHR8EYjBgMC6
be10: 67 4c 4b 41 71 68 69 68 6f 64 48 52 77 4f 69 38  gLKAqhihodHRwOi8
be20: 76 0d 0a 23 20 59 33 4a 73 4d 79 35 6b 61 57 64  v..# Y3JsMy5kaWd
be30: 70 59 32 56 79 64 43 35 6a 62 32 30 76 61 47 45  pY2VydC5jb20vaGE
be40: 74 59 33 4d 74 4d 6a 41 78 4d 57 45 75 59 33 4a  tY3MtMjAxMWEuY3J
be50: 73 4d 43 36 67 4c 4b 41 71 68 69 68 6f 64 48 52  sMC6gLKAqhihodHR
be60: 77 4f 69 38 76 0d 0a 23 20 59 33 4a 73 4e 43 35  wOi8v..# Y3JsNC5
be70: 6b 61 57 64 70 59 32 56 79 64 43 35 6a 62 32 30  kaWdpY2VydC5jb20
be80: 76 61 47 45 74 59 33 4d 74 4d 6a 41 78 4d 57 45  vaGEtY3MtMjAxMWE
be90: 75 59 33 4a 73 4d 49 49 42 78 41 59 44 56 52 30  uY3JsMIIBxAYDVR0
bea0: 67 42 49 49 42 75 7a 43 43 0d 0a 23 20 41 62 63  gBIIBuzCC..# Abc
beb0: 77 67 67 47 7a 42 67 6c 67 68 6b 67 42 68 76 31  wggGzBglghkgBhv1
bec0: 73 41 77 45 77 67 67 47 6b 4d 44 6f 47 43 43 73  sAwEwggGkMDoGCCs
bed0: 47 41 51 55 46 42 77 49 42 46 69 35 6f 64 48 52  GAQUFBwIBFi5odHR
bee0: 77 4f 69 38 76 64 33 64 33 4c 6d 52 70 0d 0a 23  wOi8vd3d3LmRp..#
bef0: 20 5a 32 6c 6a 5a 58 4a 30 4c 6d 4e 76 62 53 39   Z2ljZXJ0LmNvbS9
bf00: 7a 63 32 77 74 59 33 42 7a 4c 58 4a 6c 63 47 39  zc2wtY3BzLXJlcG9
bf10: 7a 61 58 52 76 63 6e 6b 75 61 48 52 74 4d 49 49  zaXRvcnkuaHRtMII
bf20: 42 5a 41 59 49 4b 77 59 42 42 51 55 48 41 67 49  BZAYIKwYBBQUHAgI
bf30: 77 0d 0a 23 20 67 67 46 57 48 6f 49 42 55 67 42  w..# ggFWHoIBUgB
bf40: 42 41 47 34 41 65 51 41 67 41 48 55 41 63 77 42  BAG4AeQAgAHUAcwB
bf50: 6c 41 43 41 41 62 77 42 6d 41 43 41 41 64 41 42  lACAAbwBmACAAdAB
bf60: 6f 41 47 6b 41 63 77 41 67 41 45 4d 41 5a 51 42  oAGkAcwAgAEMAZQB
bf70: 79 41 48 51 41 0d 0a 23 20 61 51 42 6d 41 47 6b  yAHQA..# aQBmAGk
bf80: 41 59 77 42 68 41 48 51 41 5a 51 41 67 41 47 4d  AYwBhAHQAZQAgAGM
bf90: 41 62 77 42 75 41 48 4d 41 64 41 42 70 41 48 51  AbwBuAHMAdABpAHQ
bfa0: 41 64 51 42 30 41 47 55 41 63 77 41 67 41 47 45  AdQB0AGUAcwAgAGE
bfb0: 41 59 77 42 6a 41 47 55 41 0d 0a 23 20 63 41 42  AYwBjAGUA..# cAB
bfc0: 30 41 47 45 41 62 67 42 6a 41 47 55 41 49 41 42  0AGEAbgBjAGUAIAB
bfd0: 76 41 47 59 41 49 41 42 30 41 47 67 41 5a 51 41  vAGYAIAB0AGgAZQA
bfe0: 67 41 45 51 41 61 51 42 6e 41 47 6b 41 51 77 42  gAEQAaQBnAGkAQwB
bff0: 6c 41 48 49 41 64 41 41 67 41 45 4d 41 0d 0a 23  lAHIAdAAgAEMA..#
c000: 20 55 41 41 76 41 45 4d 41 55 41 42 54 41 43 41   UAAvAEMAUABTACA
c010: 41 59 51 42 75 41 47 51 41 49 41 42 30 41 47 67  AYQBuAGQAIAB0AGg
c020: 41 5a 51 41 67 41 46 49 41 5a 51 42 73 41 48 6b  AZQAgAFIAZQBsAHk
c030: 41 61 51 42 75 41 47 63 41 49 41 42 51 41 47 45  AaQBuAGcAIABQAGE
c040: 41 0d 0a 23 20 63 67 42 30 41 48 6b 41 49 41 42  A..# cgB0AHkAIAB
c050: 42 41 47 63 41 63 67 42 6c 41 47 55 41 62 51 42  BAGcAcgBlAGUAbQB
c060: 6c 41 47 34 41 64 41 41 67 41 48 63 41 61 41 42  lAG4AdAAgAHcAaAB
c070: 70 41 47 4d 41 61 41 41 67 41 47 77 41 61 51 42  pAGMAaAAgAGwAaQB
c080: 74 41 47 6b 41 0d 0a 23 20 64 41 41 67 41 47 77  tAGkA..# dAAgAGw
c090: 41 61 51 42 68 41 47 49 41 61 51 42 73 41 47 6b  AaQBhAGIAaQBsAGk
c0a0: 41 64 41 42 35 41 43 41 41 59 51 42 75 41 47 51  AdAB5ACAAYQBuAGQ
c0b0: 41 49 41 42 68 41 48 49 41 5a 51 41 67 41 47 6b  AIABhAHIAZQAgAGk
c0c0: 41 62 67 42 6a 41 47 38 41 0d 0a 23 20 63 67 42  AbgBjAG8A..# cgB
c0d0: 77 41 47 38 41 63 67 42 68 41 48 51 41 5a 51 42  wAG8AcgBhAHQAZQB
c0e0: 6b 41 43 41 41 61 41 42 6c 41 48 49 41 5a 51 42  kACAAaABlAHIAZQB
c0f0: 70 41 47 34 41 49 41 42 69 41 48 6b 41 49 41 42  pAG4AIABiAHkAIAB
c100: 79 41 47 55 41 5a 67 42 6c 41 48 49 41 0d 0a 23  yAGUAZgBlAHIA..#
c110: 20 5a 51 42 75 41 47 4d 41 5a 51 41 75 4d 49 47   ZQBuAGMAZQAuMIG
c120: 47 42 67 67 72 42 67 45 46 42 51 63 42 41 51 52  GBggrBgEFBQcBAQR
c130: 36 4d 48 67 77 4a 41 59 49 4b 77 59 42 42 51 55  6MHgwJAYIKwYBBQU
c140: 48 4d 41 47 47 47 47 68 30 64 48 41 36 4c 79 39  HMAGGGGh0dHA6Ly9
c150: 76 0d 0a 23 20 59 33 4e 77 4c 6d 52 70 5a 32 6c  v..# Y3NwLmRpZ2l
c160: 6a 5a 58 4a 30 4c 6d 4e 76 62 54 42 51 42 67 67  jZXJ0LmNvbTBQBgg
c170: 72 42 67 45 46 42 51 63 77 41 6f 5a 45 61 48 52  rBgEFBQcwAoZEaHR
c180: 30 63 44 6f 76 4c 32 4e 68 59 32 56 79 64 48 4d  0cDovL2NhY2VydHM
c190: 75 5a 47 6c 6e 0d 0a 23 20 61 57 4e 6c 63 6e 51  uZGln..# aWNlcnQ
c1a0: 75 59 32 39 74 4c 30 52 70 5a 32 6c 44 5a 58 4a  uY29tL0RpZ2lDZXJ
c1b0: 30 53 47 6c 6e 61 45 46 7a 63 33 56 79 59 57 35  0SGlnaEFzc3VyYW5
c1c0: 6a 5a 55 4e 76 5a 47 56 54 61 57 64 75 61 57 35  jZUNvZGVTaWduaW5
c1d0: 6e 51 30 45 74 4d 53 35 6a 0d 0a 23 20 63 6e 51  nQ0EtMS5j..# cnQ
c1e0: 77 44 41 59 44 56 52 30 54 41 51 48 2f 42 41 49  wDAYDVR0TAQH/BAI
c1f0: 77 41 44 41 4e 42 67 6b 71 68 6b 69 47 39 77 30  wADANBgkqhkiG9w0
c200: 42 41 51 55 46 41 41 4f 43 41 51 45 41 48 49 66  BAQUFAAOCAQEAHIf
c210: 65 59 70 4f 30 4a 74 64 69 2f 54 70 63 0d 0a 23  eYpO0Jtdi/Tpc..#
c220: 20 49 36 65 57 51 49 59 55 32 41 4c 4f 38 34 37   I6eWQIYU2ALO847
c230: 51 39 31 6a 4c 45 36 57 69 55 36 75 38 77 4e 36  Q91jLE6WiU6u8wN6
c240: 74 6b 48 71 67 65 4f 6c 73 30 37 30 53 44 55 4b  tkHqgeOls070SDUK
c250: 2b 43 31 72 56 6f 58 4b 4b 5a 30 4a 65 63 32 6b  +C1rVoXKKZ0Jec2k
c260: 31 0d 0a 23 20 64 59 75 6b 4b 50 6b 79 66 33 71  1..# dYukKPkyf3q
c270: 55 52 50 79 68 2f 61 43 33 68 4a 30 57 77 62 6a  URPyh/aC3hJ0Wwbj
c280: 65 37 66 4b 37 39 4c 74 39 5a 48 77 4a 4f 52 70  e7fK79Lt9ZHwJORp
c290: 65 73 4a 72 77 61 38 54 36 33 6c 33 71 4c 4c 4c  esJrwa8T63l3qLLL
c2a0: 6c 50 61 49 59 0d 0a 23 20 6f 2f 62 71 69 4d 70  lPaIY..# o/bqiMp
c2b0: 4e 5a 52 66 4f 63 6c 75 6b 4b 67 32 68 4f 36 37  NZRfOclukKg2hO67
c2c0: 79 4d 61 51 6c 38 44 45 4c 2f 44 35 55 50 31 58  yMaQl8DEL/D5UP1X
c2d0: 5a 53 68 46 32 7a 62 61 75 48 36 32 37 7a 45 43  ZShF2zbauH627zEC
c2e0: 35 4b 58 47 5a 59 32 79 55 0d 0a 23 20 62 6d 57  5KXGZY2yU..# bmW
c2f0: 47 32 4e 30 6f 48 78 72 2b 71 34 47 79 66 64 30  G2N0oHxr+q4Gyfd0
c300: 4d 50 74 55 35 61 76 57 4f 49 4c 42 30 5a 73 4e  MPtU5avWOILB0ZsN
c310: 2b 62 72 2b 53 43 56 56 4b 36 6e 4b 7a 61 75 58  +br+SCVVK6nKzauX
c320: 4d 6b 34 48 58 6d 4b 48 61 58 37 63 79 0d 0a 23  Mk4HXmKHaX7cy..#
c330: 20 73 71 70 6d 51 69 46 62 37 2f 4a 37 74 50 51   sqpmQiFb7/J7tPQ
c340: 30 33 37 4b 51 4b 48 43 59 2f 5a 2b 66 6c 30 61  037KQKHCY/Z+fl0a
c350: 72 52 43 69 48 69 68 2f 51 2f 35 6f 77 76 35 31  rRCiHih/Q/5owv51
c360: 57 53 4b 50 69 61 55 72 6b 42 76 64 4a 30 6d 4b  WSKPiaUrkBvdJ0mK
c370: 56 0d 0a 23 20 4b 2b 4d 63 48 7a 43 43 42 72 38  V..# K+McHzCCBr8
c380: 77 67 67 57 6e 6f 41 4d 43 41 51 49 43 45 41 67  wggWnoAMCAQICEAg
c390: 63 56 2b 35 64 63 4f 75 62 6f 4c 46 53 44 48 4b  cV+5dcOuboLFSDHK
c3a0: 63 47 77 6b 77 44 51 59 4a 4b 6f 5a 49 68 76 63  cGwkwDQYJKoZIhvc
c3b0: 4e 41 51 45 46 0d 0a 23 20 42 51 41 77 62 44 45  NAQEF..# BQAwbDE
c3c0: 4c 4d 41 6b 47 41 31 55 45 42 68 4d 43 56 56 4d  LMAkGA1UEBhMCVVM
c3d0: 78 46 54 41 54 42 67 4e 56 42 41 6f 54 44 45 52  xFTATBgNVBAoTDER
c3e0: 70 5a 32 6c 44 5a 58 4a 30 49 45 6c 75 59 7a 45  pZ2lDZXJ0IEluYzE
c3f0: 5a 4d 42 63 47 41 31 55 45 0d 0a 23 20 43 78 4d  ZMBcGA1UE..# CxM
c400: 51 64 33 64 33 4c 6d 52 70 5a 32 6c 6a 5a 58 4a  Qd3d3LmRpZ2ljZXJ
c410: 30 4c 6d 4e 76 62 54 45 72 4d 43 6b 47 41 31 55  0LmNvbTErMCkGA1U
c420: 45 41 78 4d 69 52 47 6c 6e 61 55 4e 6c 63 6e 51  EAxMiRGlnaUNlcnQ
c430: 67 53 47 6c 6e 61 43 42 42 63 33 4e 31 0d 0a 23  gSGlnaCBBc3N1..#
c440: 20 63 6d 46 75 59 32 55 67 52 56 59 67 55 6d 39   cmFuY2UgRVYgUm9
c450: 76 64 43 42 44 51 54 41 65 46 77 30 78 4d 54 41  vdCBDQTAeFw0xMTA
c460: 79 4d 54 41 78 4d 6a 41 77 4d 44 42 61 46 77 30  yMTAxMjAwMDBaFw0
c470: 79 4e 6a 41 79 4d 54 41 78 4d 6a 41 77 4d 44 42  yNjAyMTAxMjAwMDB
c480: 61 0d 0a 23 20 4d 48 4d 78 43 7a 41 4a 42 67 4e  a..# MHMxCzAJBgN
c490: 56 42 41 59 54 41 6c 56 54 4d 52 55 77 45 77 59  VBAYTAlVTMRUwEwY
c4a0: 44 56 51 51 4b 45 77 78 45 61 57 64 70 51 32 56  DVQQKEwxEaWdpQ2V
c4b0: 79 64 43 42 4a 62 6d 4d 78 47 54 41 58 42 67 4e  ydCBJbmMxGTAXBgN
c4c0: 56 42 41 73 54 0d 0a 23 20 45 48 64 33 64 79 35  VBAsT..# EHd3dy5
c4d0: 6b 61 57 64 70 59 32 56 79 64 43 35 6a 62 32 30  kaWdpY2VydC5jb20
c4e0: 78 4d 6a 41 77 42 67 4e 56 42 41 4d 54 4b 55 52  xMjAwBgNVBAMTKUR
c4f0: 70 5a 32 6c 44 5a 58 4a 30 49 45 68 70 5a 32 67  pZ2lDZXJ0IEhpZ2g
c500: 67 51 58 4e 7a 64 58 4a 68 0d 0a 23 20 62 6d 4e  gQXNzdXJh..# bmN
c510: 6c 49 45 4e 76 5a 47 55 67 55 32 6c 6e 62 6d 6c  lIENvZGUgU2lnbml
c520: 75 5a 79 42 44 51 53 30 78 4d 49 49 42 49 6a 41  uZyBDQS0xMIIBIjA
c530: 4e 42 67 6b 71 68 6b 69 47 39 77 30 42 41 51 45  NBgkqhkiG9w0BAQE
c540: 46 41 41 4f 43 41 51 38 41 4d 49 49 42 0d 0a 23  FAAOCAQ8AMIIB..#
c550: 20 43 67 4b 43 41 51 45 41 78 66 6b 6a 35 70 51   CgKCAQEAxfkj5pQ
c560: 6e 78 49 41 55 70 49 41 79 58 30 43 6a 6a 57 39  nxIAUpIAyX0CjjW9
c570: 77 77 4f 55 32 63 58 45 36 64 61 53 71 47 70 4b  wwOU2cXE6daSqGpK
c580: 55 69 56 36 73 49 33 48 4c 54 6d 64 39 51 54 2b  UiV6sI3HLTmd9QT+
c590: 71 0d 0a 23 20 34 30 75 33 65 37 36 64 77 61 67  q..# 40u3e76dwag
c5a0: 34 6a 32 6b 76 4f 69 54 70 64 31 6b 53 78 32 59  4j2kvOiTpd1kSx2Y
c5b0: 45 51 38 49 4e 4a 6f 4b 4a 51 42 6e 79 4c 4f 72  EQ8INJoKJQBnyLOr
c5c0: 6e 54 4f 64 38 42 52 71 34 2f 34 67 4a 54 79 59  nTOd8BRq4/4gJTyY
c5d0: 33 37 7a 71 6b 0d 0a 23 20 2b 69 4a 73 69 4d 6c  37zqk..# +iJsiMl
c5e0: 4b 47 32 48 79 72 68 42 65 62 37 7a 52 65 5a 74  KG2HyrhBeb7zReZt
c5f0: 5a 47 47 44 6c 37 69 6d 31 41 79 71 6b 7a 76 47  ZGGDl7im1AyqkzvG
c600: 44 47 55 39 70 42 58 4d 6f 43 66 73 69 45 4a 4d  DGU9pBXMoCfsiEJM
c610: 69 6f 4a 41 5a 47 6b 77 78 0d 0a 23 20 38 74 4d  ioJAZGkwx..# 8tM
c620: 72 32 49 52 44 72 7a 78 6a 2f 35 6a 62 49 4e 49  r2IRDrzxj/5jbINI
c630: 4a 4b 31 54 42 36 76 31 71 67 2b 63 51 6f 78 4a  JK1TB6v1qg+cQoxJ
c640: 78 39 64 62 58 34 52 4a 36 31 65 42 57 57 73 37  x9dbX4RJ61eBWWs7
c650: 71 41 56 74 6f 5a 56 76 42 50 31 68 53 0d 0a 23  qAVtoZVvBP1hS..#
c660: 20 4d 36 6b 31 59 55 34 69 79 34 48 4b 4e 71 4d   M6k1YU4iy4HKNqM
c670: 53 79 77 62 57 7a 78 74 4e 47 48 36 35 6b 72 6b  SywbWzxtNGH65krk
c680: 53 7a 30 41 6d 32 4a 6f 32 68 62 4d 56 71 6b 65  Sz0Am2Jo2hbMVqke
c690: 54 68 47 73 48 75 37 7a 56 73 39 34 6c 41 42 47  ThGsHu7zVs94lABG
c6a0: 4a 0d 0a 23 20 41 47 6a 42 4b 54 7a 71 50 69 33  J..# AGjBKTzqPi3
c6b0: 75 55 4b 76 58 48 44 41 47 65 44 79 6c 45 43 4e  uUKvXHDAGeDylECN
c6c0: 6e 6b 51 49 44 41 51 41 42 6f 34 49 44 56 44 43  nkQIDAQABo4IDVDC
c6d0: 43 41 31 41 77 44 67 59 44 56 52 30 50 41 51 48  CA1AwDgYDVR0PAQH
c6e0: 2f 42 41 51 44 0d 0a 23 20 41 67 45 47 4d 42 4d  /BAQD..# AgEGMBM
c6f0: 47 41 31 55 64 4a 51 51 4d 4d 41 6f 47 43 43 73  GA1UdJQQMMAoGCCs
c700: 47 41 51 55 46 42 77 4d 44 4d 49 49 42 77 77 59  GAQUFBwMDMIIBwwY
c710: 44 56 52 30 67 42 49 49 42 75 6a 43 43 41 62 59  DVR0gBIIBujCCAbY
c720: 77 67 67 47 79 42 67 68 67 0d 0a 23 20 68 6b 67  wggGyBghg..# hkg
c730: 42 68 76 31 73 41 7a 43 43 41 61 51 77 4f 67 59  Bhv1sAzCCAaQwOgY
c740: 49 4b 77 59 42 42 51 55 48 41 67 45 57 4c 6d 68  IKwYBBQUHAgEWLmh
c750: 30 64 48 41 36 4c 79 39 33 64 33 63 75 5a 47 6c  0dHA6Ly93d3cuZGl
c760: 6e 61 57 4e 6c 63 6e 51 75 59 32 39 74 0d 0a 23  naWNlcnQuY29t..#
c770: 20 4c 33 4e 7a 62 43 31 6a 63 48 4d 74 63 6d 56   L3NzbC1jcHMtcmV
c780: 77 62 33 4e 70 64 47 39 79 65 53 35 6f 64 47 30  wb3NpdG9yeS5odG0
c790: 77 67 67 46 6b 42 67 67 72 42 67 45 46 42 51 63  wggFkBggrBgEFBQc
c7a0: 43 41 6a 43 43 41 56 59 65 67 67 46 53 41 45 45  CAjCCAVYeggFSAEE
c7b0: 41 0d 0a 23 20 62 67 42 35 41 43 41 41 64 51 42  A..# bgB5ACAAdQB
c7c0: 7a 41 47 55 41 49 41 42 76 41 47 59 41 49 41 42  zAGUAIABvAGYAIAB
c7d0: 30 41 47 67 41 61 51 42 7a 41 43 41 41 51 77 42  0AGgAaQBzACAAQwB
c7e0: 6c 41 48 49 41 64 41 42 70 41 47 59 41 61 51 42  lAHIAdABpAGYAaQB
c7f0: 6a 41 47 45 41 0d 0a 23 20 64 41 42 6c 41 43 41  jAGEA..# dABlACA
c800: 41 59 77 42 76 41 47 34 41 63 77 42 30 41 47 6b  AYwBvAG4AcwB0AGk
c810: 41 64 41 42 31 41 48 51 41 5a 51 42 7a 41 43 41  AdAB1AHQAZQBzACA
c820: 41 59 51 42 6a 41 47 4d 41 5a 51 42 77 41 48 51  AYQBjAGMAZQBwAHQ
c830: 41 59 51 42 75 41 47 4d 41 0d 0a 23 20 5a 51 41  AYQBuAGMA..# ZQA
c840: 67 41 47 38 41 5a 67 41 67 41 48 51 41 61 41 42  gAG8AZgAgAHQAaAB
c850: 6c 41 43 41 41 52 41 42 70 41 47 63 41 61 51 42  lACAARABpAGcAaQB
c860: 44 41 47 55 41 63 67 42 30 41 43 41 41 52 51 42  DAGUAcgB0ACAARQB
c870: 57 41 43 41 41 51 77 42 51 41 46 4d 41 0d 0a 23  WACAAQwBQAFMA..#
c880: 20 49 41 42 68 41 47 34 41 5a 41 41 67 41 48 51   IABhAG4AZAAgAHQ
c890: 41 61 41 42 6c 41 43 41 41 55 67 42 6c 41 47 77  AaABlACAAUgBlAGw
c8a0: 41 65 51 42 70 41 47 34 41 5a 77 41 67 41 46 41  AeQBpAG4AZwAgAFA
c8b0: 41 59 51 42 79 41 48 51 41 65 51 41 67 41 45 45  AYQByAHQAeQAgAEE
c8c0: 41 0d 0a 23 20 5a 77 42 79 41 47 55 41 5a 51 42  A..# ZwByAGUAZQB
c8d0: 74 41 47 55 41 62 67 42 30 41 43 41 41 64 77 42  tAGUAbgB0ACAAdwB
c8e0: 6f 41 47 6b 41 59 77 42 6f 41 43 41 41 62 41 42  oAGkAYwBoACAAbAB
c8f0: 70 41 47 30 41 61 51 42 30 41 43 41 41 62 41 42  pAG0AaQB0ACAAbAB
c900: 70 41 47 45 41 0d 0a 23 20 59 67 42 70 41 47 77  pAGEA..# YgBpAGw
c910: 41 61 51 42 30 41 48 6b 41 49 41 42 68 41 47 34  AaQB0AHkAIABhAG4
c920: 41 5a 41 41 67 41 47 45 41 63 67 42 6c 41 43 41  AZAAgAGEAcgBlACA
c930: 41 61 51 42 75 41 47 4d 41 62 77 42 79 41 48 41  AaQBuAGMAbwByAHA
c940: 41 62 77 42 79 41 47 45 41 0d 0a 23 20 64 41 42  AbwByAGEA..# dAB
c950: 6c 41 47 51 41 49 41 42 6f 41 47 55 41 63 67 42  lAGQAIABoAGUAcgB
c960: 6c 41 47 6b 41 62 67 41 67 41 47 49 41 65 51 41  lAGkAbgAgAGIAeQA
c970: 67 41 48 49 41 5a 51 42 6d 41 47 55 41 63 67 42  gAHIAZQBmAGUAcgB
c980: 6c 41 47 34 41 59 77 42 6c 41 43 34 77 0d 0a 23  lAG4AYwBlAC4w..#
c990: 20 44 77 59 44 56 52 30 54 41 51 48 2f 42 41 55   DwYDVR0TAQH/BAU
c9a0: 77 41 77 45 42 2f 7a 42 2f 42 67 67 72 42 67 45  wAwEB/zB/BggrBgE
c9b0: 46 42 51 63 42 41 51 52 7a 4d 48 45 77 4a 41 59  FBQcBAQRzMHEwJAY
c9c0: 49 4b 77 59 42 42 51 55 48 4d 41 47 47 47 47 68  IKwYBBQUHMAGGGGh
c9d0: 30 0d 0a 23 20 64 48 41 36 4c 79 39 76 59 33 4e  0..# dHA6Ly9vY3N
c9e0: 77 4c 6d 52 70 5a 32 6c 6a 5a 58 4a 30 4c 6d 4e  wLmRpZ2ljZXJ0LmN
c9f0: 76 62 54 42 4a 42 67 67 72 42 67 45 46 42 51 63  vbTBJBggrBgEFBQc
ca00: 77 41 6f 59 39 61 48 52 30 63 44 6f 76 4c 32 4e  wAoY9aHR0cDovL2N
ca10: 68 59 32 56 79 0d 0a 23 20 64 48 4d 75 5a 47 6c  hY2Vy..# dHMuZGl
ca20: 6e 61 57 4e 6c 63 6e 51 75 59 32 39 74 4c 30 52  naWNlcnQuY29tL0R
ca30: 70 5a 32 6c 44 5a 58 4a 30 53 47 6c 6e 61 45 46  pZ2lDZXJ0SGlnaEF
ca40: 7a 63 33 56 79 59 57 35 6a 5a 55 56 57 55 6d 39  zc3VyYW5jZUVWUm9
ca50: 76 64 45 4e 42 4c 6d 4e 79 0d 0a 23 20 64 44 43  vdENBLmNy..# dDC
ca60: 42 6a 77 59 44 56 52 30 66 42 49 47 48 4d 49 47  BjwYDVR0fBIGHMIG
ca70: 45 4d 45 43 67 50 71 41 38 68 6a 70 6f 64 48 52  EMECgPqA8hjpodHR
ca80: 77 4f 69 38 76 59 33 4a 73 4d 79 35 6b 61 57 64  wOi8vY3JsMy5kaWd
ca90: 70 59 32 56 79 64 43 35 6a 62 32 30 76 0d 0a 23  pY2VydC5jb20v..#
caa0: 20 52 47 6c 6e 61 55 4e 6c 63 6e 52 49 61 57 64   RGlnaUNlcnRIaWd
cab0: 6f 51 58 4e 7a 64 58 4a 68 62 6d 4e 6c 52 56 5a  oQXNzdXJhbmNlRVZ
cac0: 53 62 32 39 30 51 30 45 75 59 33 4a 73 4d 45 43  Sb290Q0EuY3JsMEC
cad0: 67 50 71 41 38 68 6a 70 6f 64 48 52 77 4f 69 38  gPqA8hjpodHRwOi8
cae0: 76 0d 0a 23 20 59 33 4a 73 4e 43 35 6b 61 57 64  v..# Y3JsNC5kaWd
caf0: 70 59 32 56 79 64 43 35 6a 62 32 30 76 52 47 6c  pY2VydC5jb20vRGl
cb00: 6e 61 55 4e 6c 63 6e 52 49 61 57 64 6f 51 58 4e  naUNlcnRIaWdoQXN
cb10: 7a 64 58 4a 68 62 6d 4e 6c 52 56 5a 53 62 32 39  zdXJhbmNlRVZSb29
cb20: 30 51 30 45 75 0d 0a 23 20 59 33 4a 73 4d 42 30  0Q0Eu..# Y3JsMB0
cb30: 47 41 31 55 64 44 67 51 57 42 42 53 58 53 41 50  GA1UdDgQWBBSXSAP
cb40: 72 46 51 68 72 75 62 4a 59 49 38 79 55 4c 76 48  rFQhrubJYI8yULvH
cb50: 47 5a 64 4a 6b 6a 6a 41 66 42 67 4e 56 48 53 4d  GZdJkjjAfBgNVHSM
cb60: 45 47 44 41 57 67 42 53 78 0d 0a 23 20 50 73 4e  EGDAWgBSx..# PsN
cb70: 70 41 2f 69 2f 52 77 48 55 6d 43 59 61 43 41 4c  pA/i/RwHUmCYaCAL
cb80: 76 59 32 51 72 77 7a 41 4e 42 67 6b 71 68 6b 69  vY2QrwzANBgkqhki
cb90: 47 39 77 30 42 41 51 55 46 41 41 4f 43 41 51 45  G9w0BAQUFAAOCAQE
cba0: 41 67 67 58 70 68 61 2b 6e 54 4c 2b 76 0d 0a 23  AggXpha+nTL+v..#
cbb0: 20 7a 6a 32 79 36 6d 43 78 61 4e 35 6e 77 74 4c   zj2y6mCxaN5nwtL
cbc0: 4c 4a 75 44 44 4c 35 75 31 61 77 35 54 6b 49 58  LJuDDL5u1aw5TkIX
cbd0: 32 6d 2b 41 31 41 76 2f 36 61 59 4f 71 74 48 51  2m+A1Av/6aYOqtHQ
cbe0: 79 46 44 77 75 45 45 77 6f 6d 77 71 74 43 41 6e  yFDwuEEwomwqtCAn
cbf0: 35 0d 0a 23 20 38 34 51 52 6b 34 2f 4c 59 45 42  5..# 84QRk4/LYEB
cc00: 57 36 58 63 76 61 62 4b 44 6d 56 57 72 52 79 53  W6XcvabKDmVWrRyS
cc10: 57 79 33 39 4c 73 42 43 30 6c 37 2f 45 70 5a 6b  Wy39LsBC0l7/EpZk
cc20: 47 2f 6f 37 73 46 46 41 65 58 6c 65 58 79 30 65  G/o7sFFAeXleXy0e
cc30: 35 4e 4e 6e 38 0d 0a 23 20 4f 71 4c 2f 55 43 6e  5NNn8..# OqL/UCn
cc40: 43 43 6d 49 45 37 74 36 57 4f 6d 2b 67 77 6f 55  CCmIE7t6WOm+gwoU
cc50: 50 62 2f 77 49 35 44 4a 37 30 34 53 75 61 57 41  Pb/wI5DJ704SuaWA
cc60: 4a 52 69 61 63 36 50 44 2f 2f 34 62 5a 79 41 6b  JRiac6PD//4bZyAk
cc70: 36 5a 73 4f 6e 4e 6f 38 59 0d 0a 23 20 54 2b 69  6ZsOnNo8Y..# T+i
cc80: 78 6c 70 49 75 54 72 34 4c 70 7a 4f 51 72 72 78  xlpIuTr4LpzOQrrx
cc90: 75 54 2f 46 2b 6a 62 52 47 44 6d 54 35 57 51 59  uT/F+jbRGDmT5WQY
cca0: 69 49 57 51 41 53 2b 4a 36 43 41 50 6e 76 49 6d  iIWQAS+J6CAPnvIm
ccb0: 51 6e 6b 4a 50 41 63 43 32 46 6e 39 31 0d 0a 23  QnkJPAcC2Fn91..#
ccc0: 20 36 6b 61 79 70 56 51 76 6a 4a 50 4e 45 54 59   6kaypVQvjJPNETY
ccd0: 30 61 69 68 58 7a 4a 51 2f 36 58 7a 49 47 41 4d  0aihXzJQ/6XzIGAM
cce0: 44 42 48 35 44 32 76 6d 58 6f 56 6c 48 32 68 4b  DBH5D2vmXoVlH2hK
ccf0: 71 34 47 30 34 41 46 30 31 4b 38 55 69 68 73 73  q4G04AF01K8Uihss
cd00: 47 0d 0a 23 20 79 72 78 36 54 54 30 6d 52 6a 47  G..# yrx6TT0mRjG
cd10: 43 41 36 77 77 67 67 4f 6f 41 67 45 42 4d 49 47  CA6wwggOoAgEBMIG
cd20: 48 4d 48 4d 78 43 7a 41 4a 42 67 4e 56 42 41 59  HMHMxCzAJBgNVBAY
cd30: 54 41 6c 56 54 4d 52 55 77 45 77 59 44 56 51 51  TAlVTMRUwEwYDVQQ
cd40: 4b 45 77 78 45 0d 0a 23 20 61 57 64 70 51 32 56  KEwxE..# aWdpQ2V
cd50: 79 64 43 42 4a 62 6d 4d 78 47 54 41 58 42 67 4e  ydCBJbmMxGTAXBgN
cd60: 56 42 41 73 54 45 48 64 33 64 79 35 6b 61 57 64  VBAsTEHd3dy5kaWd
cd70: 70 59 32 56 79 64 43 35 6a 62 32 30 78 4d 6a 41  pY2VydC5jb20xMjA
cd80: 77 42 67 4e 56 42 41 4d 54 0d 0a 23 20 4b 55 52  wBgNVBAMT..# KUR
cd90: 70 5a 32 6c 44 5a 58 4a 30 49 45 68 70 5a 32 67  pZ2lDZXJ0IEhpZ2g
cda0: 67 51 58 4e 7a 64 58 4a 68 62 6d 4e 6c 49 45 4e  gQXNzdXJhbmNlIEN
cdb0: 76 5a 47 55 67 55 32 6c 6e 62 6d 6c 75 5a 79 42  vZGUgU2lnbmluZyB
cdc0: 44 51 53 30 78 41 68 41 4f 61 51 61 59 0d 0a 23  DQS0xAhAOaQaY..#
cdd0: 20 77 68 54 49 65 72 57 32 42 4c 6b 57 50 4e 47   whTIerW2BLkWPNG
cde0: 51 4d 41 6b 47 42 53 73 4f 41 77 49 61 42 51 43  QMAkGBSsOAwIaBQC
cdf0: 67 65 44 41 59 42 67 6f 72 42 67 45 45 41 59 49  geDAYBgorBgEEAYI
ce00: 33 41 67 45 4d 4d 51 6f 77 43 4b 41 43 67 41 43  3AgEMMQowCKACgAC
ce10: 68 0d 0a 23 20 41 6f 41 41 4d 42 6b 47 43 53 71  h..# AoAAMBkGCSq
ce20: 47 53 49 62 33 44 51 45 4a 41 7a 45 4d 42 67 6f  GSIb3DQEJAzEMBgo
ce30: 72 42 67 45 45 41 59 49 33 41 67 45 45 4d 42 77  rBgEEAYI3AgEEMBw
ce40: 47 43 69 73 47 41 51 51 42 67 6a 63 43 41 51 73  GCisGAQQBgjcCAQs
ce50: 78 44 6a 41 4d 0d 0a 23 20 42 67 6f 72 42 67 45  xDjAM..# BgorBgE
ce60: 45 41 59 49 33 41 67 45 56 4d 43 4d 47 43 53 71  EAYI3AgEVMCMGCSq
ce70: 47 53 49 62 33 44 51 45 4a 42 44 45 57 42 42 52  GSIb3DQEJBDEWBBR
ce80: 6c 37 5a 38 4b 61 34 73 61 2f 34 42 30 59 75 74  l7Z8Ka4sa/4B0Yut
ce90: 68 55 69 57 6b 30 44 4f 49 0d 0a 23 20 68 54 41  hUiWk0DOI..# hTA
cea0: 4e 42 67 6b 71 68 6b 69 47 39 77 30 42 41 51 45  NBgkqhkiG9w0BAQE
ceb0: 46 41 41 53 43 41 51 43 62 37 50 4e 75 4a 57 73  FAASCAQCb7PNuJWs
cec0: 6d 4f 78 52 50 4c 47 34 6f 37 30 69 48 31 2f 6b  mOxRPLG4o70iH1/k
ced0: 68 65 75 53 43 34 35 58 49 6a 39 52 6a 0d 0a 23  heuSC45XIj9Rj..#
cee0: 20 33 51 48 4b 71 48 37 55 52 65 73 77 4d 57 4e   3QHKqH7UReswMWN
cef0: 6e 70 45 42 77 4d 33 77 30 6b 58 4d 53 48 65 4c  npEBwM3w0kXMSHeL
cf00: 76 75 7a 74 78 34 68 48 74 43 44 58 56 61 66 38  vuztx4hHtCDXVaf8
cf10: 73 75 67 74 76 5a 7a 2f 69 37 78 6a 45 64 55 33  sugtvZz/i7xjEdU3
cf20: 51 0d 0a 23 20 51 46 31 44 53 44 45 50 59 63 74  Q..# QF1DSDEPYct
cf30: 68 2f 7a 6b 31 71 65 47 50 32 46 70 42 6e 52 2f  h/zk1qeGP2FpBnR/
cf40: 68 47 46 2f 77 75 70 35 33 58 52 39 33 79 49 79  hGF/wup53XR93yIy
cf50: 58 67 4a 66 78 4a 6a 59 46 42 73 55 4c 37 41 36  XgJfxJjYFBsUL7A6
cf60: 62 39 56 64 67 0d 0a 23 20 34 2f 68 31 34 61 4f  b9Vdg..# 4/h14aO
cf70: 54 76 34 49 51 50 65 38 4c 4c 73 72 31 34 51 58  Tv4IQPe8LLsr14QX
cf80: 61 58 52 72 63 42 53 63 41 46 56 71 63 56 43 6f  aXRrcBScAFVqcVCo
cf90: 52 35 7a 75 30 30 33 41 2b 2b 52 4e 61 69 76 34  R5zu003A++RNaiv4
cfa0: 79 72 49 36 63 68 70 32 41 0d 0a 23 20 49 6d 4b  yrI6chp2A..# ImK
cfb0: 57 77 61 39 77 42 74 6e 79 30 57 46 61 6c 74 41  Wwa9wBtny0WFaltA
cfc0: 6e 6c 41 41 6e 68 2b 79 63 63 6e 2f 61 37 37 47  nlAAnh+yccn/a77G
cfd0: 45 56 4e 5a 67 54 4e 7a 6d 64 4f 51 76 36 46 68  EVNZgTNzmdOQv6Fh
cfe0: 2b 5a 4e 71 43 53 54 66 41 51 52 64 36 0d 0a 23  +ZNqCSTfAQRd6..#
cff0: 20 62 43 37 46 44 6c 49 71 76 74 31 44 57 6c 38   bC7FDlIqvt1DWl8
d000: 68 41 44 57 6d 73 77 7a 36 52 52 38 43 52 32 64  hADWmswz6RR8CR2d
d010: 69 6a 50 67 32 37 79 57 4e 6d 36 48 4c 6d 4d 2f  ijPg27yWNm6HLmM/
d020: 64 6f 59 49 42 66 7a 43 43 41 58 73 47 43 53 71  doYIBfzCCAXsGCSq
d030: 47 0d 0a 23 20 53 49 62 33 44 51 45 4a 42 6a 47  G..# SIb3DQEJBjG
d040: 43 41 57 77 77 67 67 46 6f 41 67 45 42 4d 47 63  CAWwwggFoAgEBMGc
d050: 77 55 7a 45 4c 4d 41 6b 47 41 31 55 45 42 68 4d  wUzELMAkGA1UEBhM
d060: 43 56 56 4d 78 46 7a 41 56 42 67 4e 56 42 41 6f  CVVMxFzAVBgNVBAo
d070: 54 44 6c 5a 6c 0d 0a 23 20 63 6d 6c 54 61 57 64  TDlZl..# cmlTaWd
d080: 75 4c 43 42 4a 62 6d 4d 75 4d 53 73 77 4b 51 59  uLCBJbmMuMSswKQY
d090: 44 56 51 51 44 45 79 4a 57 5a 58 4a 70 55 32 6c  DVQQDEyJWZXJpU2l
d0a0: 6e 62 69 42 55 61 57 31 6c 49 46 4e 30 59 57 31  nbiBUaW1lIFN0YW1
d0b0: 77 61 57 35 6e 49 46 4e 6c 0d 0a 23 20 63 6e 5a  waW5nIFNl..# cnZ
d0c0: 70 59 32 56 7a 49 45 4e 42 41 68 42 35 6f 71 57  pY2VzIENBAhB5oqW
d0d0: 46 2b 64 45 56 51 68 50 5a 75 44 37 32 74 6f 33  F+dEVQhPZuD72to3
d0e0: 74 4d 41 6b 47 42 53 73 4f 41 77 49 61 42 51 43  tMAkGBSsOAwIaBQC
d0f0: 67 58 54 41 59 42 67 6b 71 68 6b 69 47 0d 0a 23  gXTAYBgkqhkiG..#
d100: 20 39 77 30 42 43 51 4d 78 43 77 59 4a 4b 6f 5a   9w0BCQMxCwYJKoZ
d110: 49 68 76 63 4e 41 51 63 42 4d 42 77 47 43 53 71  IhvcNAQcBMBwGCSq
d120: 47 53 49 62 33 44 51 45 4a 42 54 45 50 46 77 30  GSIb3DQEJBTEPFw0
d130: 78 4d 6a 41 34 4d 44 49 78 4e 54 41 33 4d 6a 52  xMjA4MDIxNTA3MjR
d140: 61 0d 0a 23 20 4d 43 4d 47 43 53 71 47 53 49 62  a..# MCMGCSqGSIb
d150: 33 44 51 45 4a 42 44 45 57 42 42 52 50 7a 6a 5a  3DQEJBDEWBBRPzjZ
d160: 39 46 46 51 49 34 4a 79 77 78 52 57 2f 4f 2f 73  9FFQI4JywxRW/O/s
d170: 2f 65 57 4d 7a 50 6a 41 4e 42 67 6b 71 68 6b 69  /eWMzPjANBgkqhki
d180: 47 39 77 30 42 0d 0a 23 20 41 51 45 46 41 41 53  G9w0B..# AQEFAAS
d190: 42 67 4a 6b 49 55 4b 4f 50 74 37 42 66 4c 39 68  BgJkIUKOPt7BfL9h
d1a0: 6f 6f 6b 73 31 55 36 5a 59 31 66 74 39 6c 4e 6e  ooks1U6ZY1ft9lNn
d1b0: 49 42 31 2f 69 4f 59 73 44 34 51 71 57 4b 2b 46  IB1/iOYsD4QqWK+F
d1c0: 53 76 36 77 34 6f 4d 30 54 0d 0a 23 20 34 53 37  Sv6w4oM0T..# 4S7
d1d0: 6d 77 50 6e 62 54 42 33 57 75 57 58 78 6e 74 35  mwPnbTB3WuWXxnt5
d1e0: 35 2b 4a 70 53 6b 73 68 69 47 79 4b 6d 42 4a 39  5+JpSkshiGyKmBJ9
d1f0: 62 69 77 68 30 61 34 68 34 5a 71 41 2b 56 66 54  biwh0a4h4ZqA+VfT
d200: 4c 6d 62 59 2b 73 7a 61 6c 6f 57 43 78 0d 0a 23  LmbY+szaloWCx..#
d210: 20 39 6f 72 64 49 43 4b 4f 73 4a 31 53 2b 37 53   9ordICKOsJ1S+7S
d220: 70 58 4e 49 6d 47 78 76 52 37 6d 4f 63 4e 43 70  pXNImGxvR7mOcNCp
d230: 78 56 63 6e 36 4f 59 7a 66 42 72 38 61 4e 52 34  xVcn6OYzfBr8aNR4
d240: 79 2b 69 4a 4e 0d 0a 23 20 53 49 47 20 23 20 45  y+iJN..# SIG # E
d250: 6e 64 20 73 69 67 6e 61 74 75 72 65 20 62 6c 6f  nd signature blo
d260: 63 6b 0d 0a                                      ck..