From 6487670aee74435daa8ce635303e1becf5fea203 Mon Sep 17 00:00:00 2001 From: "bot@clarius.org" Date: Thu, 13 Jun 2024 12:13:29 +0000 Subject: [PATCH] Publish pages from devlooped/Mvp.Xml@9d28ab727 --- assets/css/style.css | 273 ++++++++++++++++++++++++++++++ assets/images/bg_hr.png | Bin 0 -> 78 bytes assets/images/blacktocat.png | Bin 0 -> 463 bytes assets/images/icon_download.png | Bin 0 -> 216 bytes assets/images/sprite_download.png | Bin 0 -> 14832 bytes assets/img/logo.png | Bin 0 -> 2952 bytes assets/img/logo.svg | 4 + assets/img/original.png | Bin 0 -> 8274 bytes changelog.html | 97 +++++++++++ changelog.md | 38 +++++ index.html | 175 +++++++++++++++++++ license.txt | 22 +++ readme.md | 127 ++++++++++++++ 13 files changed, 736 insertions(+) create mode 100644 assets/css/style.css create mode 100644 assets/images/bg_hr.png create mode 100644 assets/images/blacktocat.png create mode 100644 assets/images/icon_download.png create mode 100644 assets/images/sprite_download.png create mode 100644 assets/img/logo.png create mode 100644 assets/img/logo.svg create mode 100644 assets/img/original.png create mode 100644 changelog.html create mode 100644 changelog.md create mode 100644 index.html create mode 100644 license.txt create mode 100644 readme.md diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..bdaa524 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,273 @@ +.highlight table td { padding: 5px; } + +.highlight table pre { margin: 0; } + +.highlight .cm { color: #777772; font-style: italic; } + +.highlight .cp { color: #797676; font-weight: bold; } + +.highlight .c1 { color: #777772; font-style: italic; } + +.highlight .cs { color: #797676; font-weight: bold; font-style: italic; } + +.highlight .c, .highlight .cd { color: #777772; font-style: italic; } + +.highlight .err { color: #a61717; background-color: #e3d2d2; } + +.highlight .gd { color: #000000; background-color: #ffdddd; } + +.highlight .ge { color: #000000; font-style: italic; } + +.highlight .gr { color: #aa0000; } + +.highlight .gh { color: #797676; } + +.highlight .gi { color: #000000; background-color: #ddffdd; } + +.highlight .go { color: #888888; } + +.highlight .gp { color: #555555; } + +.highlight .gs { font-weight: bold; } + +.highlight .gu { color: #aaaaaa; } + +.highlight .gt { color: #aa0000; } + +.highlight .kc { color: #000000; font-weight: bold; } + +.highlight .kd { color: #000000; font-weight: bold; } + +.highlight .kn { color: #000000; font-weight: bold; } + +.highlight .kp { color: #000000; font-weight: bold; } + +.highlight .kr { color: #000000; font-weight: bold; } + +.highlight .kt { color: #445588; font-weight: bold; } + +.highlight .k, .highlight .kv { color: #000000; font-weight: bold; } + +.highlight .mf { color: #009999; } + +.highlight .mh { color: #009999; } + +.highlight .il { color: #009999; } + +.highlight .mi { color: #009999; } + +.highlight .mo { color: #009999; } + +.highlight .m, .highlight .mb, .highlight .mx { color: #009999; } + +.highlight .sb { color: #d14; } + +.highlight .sc { color: #d14; } + +.highlight .sd { color: #d14; } + +.highlight .s2 { color: #d14; } + +.highlight .se { color: #d14; } + +.highlight .sh { color: #d14; } + +.highlight .si { color: #d14; } + +.highlight .sx { color: #d14; } + +.highlight .sr { color: #009926; } + +.highlight .s1 { color: #d14; } + +.highlight .ss { color: #990073; } + +.highlight .s { color: #d14; } + +.highlight .na { color: #008080; } + +.highlight .bp { color: #797676; } + +.highlight .nb { color: #0086B3; } + +.highlight .nc { color: #445588; font-weight: bold; } + +.highlight .no { color: #008080; } + +.highlight .nd { color: #3c5d5d; font-weight: bold; } + +.highlight .ni { color: #800080; } + +.highlight .ne { color: #990000; font-weight: bold; } + +.highlight .nf { color: #990000; font-weight: bold; } + +.highlight .nl { color: #990000; font-weight: bold; } + +.highlight .nn { color: #555555; } + +.highlight .nt { color: #000080; } + +.highlight .vc { color: #008080; } + +.highlight .vg { color: #008080; } + +.highlight .vi { color: #008080; } + +.highlight .nv { color: #008080; } + +.highlight .ow { color: #000000; font-weight: bold; } + +.highlight .o { color: #000000; font-weight: bold; } + +.highlight .w { color: #bbbbbb; } + +.highlight { background-color: #f8f8f8; } + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; vertical-align: baseline; } + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } + +ol, ul { list-style: none; } + +table { border-collapse: collapse; border-spacing: 0; } + +/******************************************************************************* +Theme Styles +*******************************************************************************/ +body { box-sizing: border-box; color: #373737; background: #212121; font-size: 16px; font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; line-height: 1.5; -webkit-font-smoothing: antialiased; } + +h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-weight: 700; color: #222222; font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; letter-spacing: -1px; } + +h1 { font-size: 36px; font-weight: 700; } + +h2 { padding-bottom: 10px; font-size: 32px; background: url("../images/bg_hr.png") repeat-x bottom; } + +h3 { font-size: 24px; } + +h4 { font-size: 21px; } + +h5 { font-size: 18px; } + +h6 { font-size: 16px; } + +p { margin: 10px 0 15px 0; } + +footer p { color: #f2f2f2; } + +a { text-decoration: none; color: #0F79D0; text-shadow: none; transition: color 0.5s ease; transition: text-shadow 0.5s ease; -webkit-transition: color 0.5s ease; -webkit-transition: text-shadow 0.5s ease; -moz-transition: color 0.5s ease; -moz-transition: text-shadow 0.5s ease; -o-transition: color 0.5s ease; -o-transition: text-shadow 0.5s ease; -ms-transition: color 0.5s ease; -ms-transition: text-shadow 0.5s ease; } + +a:hover, a:focus { text-decoration: underline; } + +footer a { color: #F2F2F2; text-decoration: underline; } + +em, cite { font-style: italic; } + +strong { font-weight: bold; } + +img { position: relative; margin: 0 auto; max-width: 739px; padding: 5px; margin: 10px 0 10px 0; border: 1px solid #ebebeb; box-shadow: 0 0 5px #ebebeb; -webkit-box-shadow: 0 0 5px #ebebeb; -moz-box-shadow: 0 0 5px #ebebeb; -o-box-shadow: 0 0 5px #ebebeb; -ms-box-shadow: 0 0 5px #ebebeb; } + +p img { display: inline; margin: 0; padding: 0; vertical-align: middle; text-align: center; border: none; } + +pre, code { color: #222; background-color: #fff; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 14px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } + +pre { padding: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); overflow: auto; } + +code { padding: 3px; margin: 0 3px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } + +pre code { display: block; box-shadow: none; } + +blockquote { color: #666; margin-bottom: 20px; padding: 0 0 0 20px; border-left: 3px solid #bbb; } + +ul, ol, dl { margin-bottom: 15px; } + +ul { list-style-position: inside; list-style: disc; padding-left: 20px; } + +ol { list-style-position: inside; list-style: decimal; padding-left: 20px; } + +dl dt { font-weight: bold; } + +dl dd { padding-left: 20px; font-style: italic; } + +dl p { padding-left: 20px; font-style: italic; } + +hr { height: 1px; margin-bottom: 5px; border: none; background: url("../images/bg_hr.png") repeat-x center; } + +table { border: 1px solid #373737; margin-bottom: 20px; text-align: left; } + +th { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 10px; background: #373737; color: #fff; } + +td { padding: 10px; border: 1px solid #373737; } + +form { background: #f2f2f2; padding: 20px; } + +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ +.outer { width: 100%; } + +.inner { position: relative; max-width: 640px; padding: 20px 10px; margin: 0 auto; } + +#forkme_banner { display: block; position: absolute; top: 0; right: 10px; z-index: 10; padding: 10px 50px 10px 10px; color: #fff; background: url("../images/blacktocat.png") #0090ff no-repeat 95% 50%; font-weight: 700; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; } + +#header_wrap { background: #212121; background: -moz-linear-gradient(top, #373737, #212121); background: -webkit-linear-gradient(top, #373737, #212121); background: -ms-linear-gradient(top, #373737, #212121); background: -o-linear-gradient(top, #373737, #212121); background: linear-gradient(to top, #373737, #212121); } + +#header_wrap .inner { padding: 50px 10px 30px 10px; } + +#project_title { margin: 0; color: #fff; font-size: 42px; font-weight: 700; text-shadow: #111 0px 0px 10px; } + +#project_tagline { color: #fff; font-size: 24px; font-weight: 300; background: none; text-shadow: #111 0px 0px 10px; } + +#downloads { position: absolute; width: 210px; z-index: 10; bottom: -40px; right: 0; height: 70px; background: url("../images/icon_download.png") no-repeat 0% 90%; } + +.zip_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom left; } + +.tar_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom right; margin-left: 10px; } + +.zip_download_link:hover { background: url(../images/sprite_download.png) no-repeat top left; } + +.tar_download_link:hover { background: url(../images/sprite_download.png) no-repeat top right; } + +#main_content_wrap { background: #f2f2f2; border-top: 1px solid #111; border-bottom: 1px solid #111; } + +#main_content { padding-top: 40px; } + +#footer_wrap { background: #212121; } + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ +@media screen and (max-width: 992px) { img { max-width: 100%; } } +@media screen and (max-width: 480px) { body { font-size: 14px; } + #downloads { display: none; } + .inner { min-width: 320px; max-width: 480px; } + #project_title { font-size: 32px; } + h1 { font-size: 28px; } + h2 { font-size: 24px; } + h3 { font-size: 21px; } + h4 { font-size: 18px; } + h5 { font-size: 14px; } + h6 { font-size: 12px; } + code, pre { font-size: 11px; } } +@media screen and (max-width: 320px) { body { font-size: 14px; } + #downloads { display: none; } + .inner { min-width: 240px; max-width: 320px; } + #project_title { font-size: 28px; } + h1 { font-size: 24px; } + h2 { font-size: 21px; } + h3 { font-size: 18px; } + h4 { font-size: 16px; } + h5 { font-size: 14px; } + h6 { font-size: 12px; } + code, pre { min-width: 240px; max-width: 320px; font-size: 11px; } } +.inner { max-width: 960px; } + +pre, code { background-color: unset; font-size: unset; } + +code { font-size: 0.80em; } + +h1 > img { border: unset; box-shadow: unset; vertical-align: middle; -moz-box-shadow: unset; -o-box-shadow: unset; -ms-box-shadow: unset; } diff --git a/assets/images/bg_hr.png b/assets/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic literal 0 HcmV?d00001 diff --git a/assets/images/blacktocat.png b/assets/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 0 HcmV?d00001 diff --git a/assets/images/icon_download.png b/assets/images/icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( literal 0 HcmV?d00001 diff --git a/assets/images/sprite_download.png b/assets/images/sprite_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe GIT binary patch literal 14832 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 + <MVP/> + \ No newline at end of file diff --git a/assets/img/original.png b/assets/img/original.png new file mode 100644 index 0000000000000000000000000000000000000000..4030bf2dd0f78aa62789917ec0b4d287eaac40f0 GIT binary patch literal 8274 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 + + + + + + + + + +Changelog | Mvp.Xml + + + + + + + + + + + + +
+
+ View on GitHub + +

Mvp.Xml

+

+ + +
+
+ + +
+
+

Changelog

+ +

v3.1.0 (2023-08-11)

+ +

Full Changelog

+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Remove current implementation of SponsorLink for now #29 (@kzu)
  • +
+ +

v3.0.0 (2023-03-27)

+ +

Full Changelog

+ +

v3.0.0-beta (2023-03-24)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Remove Common from Mvp.Xml namespaces #7 (@kzu)
  • +
+ +

v3.0.0-alpha (2023-03-24)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add SponsorLink to ensure ongoing development and support #5 (@kzu)
  • +
  • Modernize and update #1 (@kzu)
  • +
+ +

v2.3.0 (2007-08-09)

+ +

Full Changelog

+ +

* This Changelog was automatically generated by github_changelog_generator

+ +
+
+ + + + + + + diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..df26868 --- /dev/null +++ b/changelog.md @@ -0,0 +1,38 @@ +# Changelog + +## [v3.1.0](https://github.com/devlooped/Mvp.Xml/tree/v3.1.0) (2023-08-11) + +[Full Changelog](https://github.com/devlooped/Mvp.Xml/compare/v3.0.0...v3.1.0) + +:twisted_rightwards_arrows: Merged: + +- Remove current implementation of SponsorLink for now [\#29](https://github.com/devlooped/Mvp.Xml/pull/29) (@kzu) + +## [v3.0.0](https://github.com/devlooped/Mvp.Xml/tree/v3.0.0) (2023-03-27) + +[Full Changelog](https://github.com/devlooped/Mvp.Xml/compare/v3.0.0-beta...v3.0.0) + +## [v3.0.0-beta](https://github.com/devlooped/Mvp.Xml/tree/v3.0.0-beta) (2023-03-24) + +[Full Changelog](https://github.com/devlooped/Mvp.Xml/compare/v3.0.0-alpha...v3.0.0-beta) + +:sparkles: Implemented enhancements: + +- Remove Common from Mvp.Xml namespaces [\#7](https://github.com/devlooped/Mvp.Xml/pull/7) (@kzu) + +## [v3.0.0-alpha](https://github.com/devlooped/Mvp.Xml/tree/v3.0.0-alpha) (2023-03-24) + +[Full Changelog](https://github.com/devlooped/Mvp.Xml/compare/v2.3.0...v3.0.0-alpha) + +:sparkles: Implemented enhancements: + +- Add SponsorLink to ensure ongoing development and support [\#5](https://github.com/devlooped/Mvp.Xml/pull/5) (@kzu) +- Modernize and update [\#1](https://github.com/devlooped/Mvp.Xml/pull/1) (@kzu) + +## [v2.3.0](https://github.com/devlooped/Mvp.Xml/tree/v2.3.0) (2007-08-09) + +[Full Changelog](https://github.com/devlooped/Mvp.Xml/compare/647a43f04add21073eaa1a5b679d9f6d23bfda52...v2.3.0) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/index.html b/index.html new file mode 100644 index 0000000..2d28b69 --- /dev/null +++ b/index.html @@ -0,0 +1,175 @@ + + + + + + + + + + +Mvp.Xml + + + + + + + + + + + + +
+
+ View on GitHub + +

Mvp.Xml

+

+ + +
+
+ + +
+
+

Icon

+ +

Version +Downloads +License +Build

+ + +

The original Mvp.Xml project, developed by Microsoft MVP’s in XML technologies and XML Web Services worldwide. +It is aimed at supplementing .NET XML processing. All the project’s classes contain extensive tests to ensure +its quality, as well as the peer review among this highly focused group of XML lovers.

+ +

Mvp.Xml project currently provides .NET implementations of EXSLT, XML Base, +XInclude, XPointer as well as a unique set of utility classes +and tools making XML programming in .NET platform easier, more productive and effective.

+ +

EXSLT

+ +

Example usage of EXSLT:

+ +
var xslt = new MvpXslTransform();
+xslt.Load("foo.xsl");
+// Optionally enforce the output to be XHTML
+xslt.EnforceXHTMLOutput = true;
+xslt.Transform(new XmlInput("foo.xml"), new XmlOutput("result.html"));
+
+ +

Usage in XPath-only context:

+ +
XPathExpression expr = nav.Compile("set:distinct(//author)");
+expr.SetContext(new ExsltContext(doc.NameTable));
+XPathNodeIterator authors = nav.Select(expr);
+while (authors.MoveNext())
+    Console.WriteLine(authors.Current.Value);
+
+ +

XInclude

+ +

Example usage of XInclude:

+ +
var reader = new XIncludingReader(XmlReader.Create(uri));
+var document = XDocument.Load(reader);
+
+ +

Miscelaneous

+ +

Some other helper classes include:

+ +
public XPathNodeIterator GetExpensiveBooks(IXPathNavigable doc, int minPrice)
+{
+ string expr = "//mvp:titles[mvp:price > $price]";
+ 
+ // XPathCache optimally caches the compiled XPath expression and parameterizes it
+ return XPathCache.Select(expr, doc.CreateNavigator(), mgr, new XPathVariable("price", minPrice));
+}
+
+ +
var xslt = new XslTransform();
+xslt.Load("print_root.xsl");
+var doc = new XPathDocument("library.xml");
+ 
+var books = doc.CreateNavigator().Select("/library/book");
+while (books.MoveNext())
+{
+    // Transform subtree for current node
+    xslt.Transform(new SubtreeeXPathNavigator(books.Current), null, Console.Out, null);
+}
+
+ + +

Sponsors

+ + +

Clarius Org +Kirill Osenkov +MFB Technologies, Inc. +Stephen Shaw +Torutek +DRIVE.NET, Inc. +Daniel Gnägi +Ashley Medway +Keith Pickford +Thomas Bolon +Kori Francis +Sean Killeen +Toni Wenzel +Giorgi Dalakishvili +Mike James +Dan Siegel +Reuben Swartz +Jacob Foshee + +Norman Mackay +Certify The Web +Ix Technologies B.V. +David JENNI +Jonathan +Oleg Kyrylchuk +Charley Wu +Jakob Tikjøb Andersen +Seann Alexander +Tino Hager +Mark Seemann +Angelo Belchior +Ken Bonny +Simon Cropp +agileworks-eu +sorahex +Zheyu Shen +Vezel

+ + + +

Sponsor this project

+ +

Learn more about GitHub Sponsors

+ + + +
+
+ + + + + + + diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..15f28d1 --- /dev/null +++ b/license.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) XMLMVP Project and Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6d4401c --- /dev/null +++ b/readme.md @@ -0,0 +1,127 @@ +![Icon](assets/img/logo.png) +============ + +[![Version](https://img.shields.io/nuget/vpre/Mvp.Xml.svg?color=royalblue)](https://www.nuget.org/packages/Mvp.Xml) +[![Downloads](https://img.shields.io/nuget/dt/Mvp.Xml.svg?color=green)](https://www.nuget.org/packages/Mvp.Xml) +[![License](https://img.shields.io/github/license/devlooped/Mvp.Xml.svg?color=blue)](https://github.com//devlooped/Mvp.Xml/blob/main/license.txt) +[![Build](https://github.com/devlooped/Mvp.Xml/workflows/build/badge.svg?branch=main)](https://github.com/devlooped/Mvp.Xml/actions) + + +The original Mvp.Xml project, developed by Microsoft MVP's in XML technologies and XML Web Services worldwide. +It is aimed at supplementing .NET XML processing. All the project's classes contain extensive tests to ensure +its quality, as well as the peer review among this highly focused group of XML lovers. + +Mvp.Xml project currently provides .NET implementations of [EXSLT](http://www.exslt.org/), [XML Base](http://www.w3.org/TR/xmlbase/), +[XInclude](http://www.w3.org/TR/xinclude/), [XPointer](http://www.w3.org/TR/xptr-framework/) as well as a unique set of utility classes +and tools making XML programming in .NET platform easier, more productive and effective. + +## EXSLT + +Example usage of [EXSLT](http://www.exslt.org/): + +```csharp +var xslt = new MvpXslTransform(); +xslt.Load("foo.xsl"); +// Optionally enforce the output to be XHTML +xslt.EnforceXHTMLOutput = true; +xslt.Transform(new XmlInput("foo.xml"), new XmlOutput("result.html")); +``` + +Usage in XPath-only context: + +```csharp +XPathExpression expr = nav.Compile("set:distinct(//author)"); +expr.SetContext(new ExsltContext(doc.NameTable)); +XPathNodeIterator authors = nav.Select(expr); +while (authors.MoveNext()) + Console.WriteLine(authors.Current.Value); +``` + +## XInclude + +Example usage of [XInclude](http://www.w3.org/TR/xinclude/): + +```csharp +var reader = new XIncludingReader(XmlReader.Create(uri)); +var document = XDocument.Load(reader); +``` + +## Miscelaneous + +Some other helper classes include: + +```csharp +public XPathNodeIterator GetExpensiveBooks(IXPathNavigable doc, int minPrice) +{ + string expr = "//mvp:titles[mvp:price > $price]"; + + // XPathCache optimally caches the compiled XPath expression and parameterizes it + return XPathCache.Select(expr, doc.CreateNavigator(), mgr, new XPathVariable("price", minPrice)); +} +``` + +```csharp +var xslt = new XslTransform(); +xslt.Load("print_root.xsl"); +var doc = new XPathDocument("library.xml"); + +var books = doc.CreateNavigator().Select("/library/book"); +while (books.MoveNext()) +{ + // Transform subtree for current node + xslt.Transform(new SubtreeeXPathNavigator(books.Current), null, Console.Out, null); +} +``` + + +# Sponsors + + +[![Clarius Org](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/clarius.png "Clarius Org")](https://github.com/clarius) +[![Kirill Osenkov](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KirillOsenkov.png "Kirill Osenkov")](https://github.com/KirillOsenkov) +[![MFB Technologies, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MFB-Technologies-Inc.png "MFB Technologies, Inc.")](https://github.com/MFB-Technologies-Inc) +[![Stephen Shaw](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/decriptor.png "Stephen Shaw")](https://github.com/decriptor) +[![Torutek](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/torutek-gh.png "Torutek")](https://github.com/torutek-gh) +[![DRIVE.NET, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/drivenet.png "DRIVE.NET, Inc.")](https://github.com/drivenet) +[![Daniel Gnägi](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/dgnaegi.png "Daniel Gnägi")](https://github.com/dgnaegi) +[![Ashley Medway](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/AshleyMedway.png "Ashley Medway")](https://github.com/AshleyMedway) +[![Keith Pickford](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Keflon.png "Keith Pickford")](https://github.com/Keflon) +[![Thomas Bolon](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tbolon.png "Thomas Bolon")](https://github.com/tbolon) +[![Kori Francis](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/kfrancis.png "Kori Francis")](https://github.com/kfrancis) +[![Sean Killeen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/SeanKilleen.png "Sean Killeen")](https://github.com/SeanKilleen) +[![Toni Wenzel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/twenzel.png "Toni Wenzel")](https://github.com/twenzel) +[![Giorgi Dalakishvili](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Giorgi.png "Giorgi Dalakishvili")](https://github.com/Giorgi) +[![Mike James](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MikeCodesDotNET.png "Mike James")](https://github.com/MikeCodesDotNET) +[![Dan Siegel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/dansiegel.png "Dan Siegel")](https://github.com/dansiegel) +[![Reuben Swartz](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/rbnswartz.png "Reuben Swartz")](https://github.com/rbnswartz) +[![Jacob Foshee](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jfoshee.png "Jacob Foshee")](https://github.com/jfoshee) +[![](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Mrxx99.png "")](https://github.com/Mrxx99) +[![Eric Johnson](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/eajhnsn1.png "Eric Johnson")](https://github.com/eajhnsn1) +[![Norman Mackay](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/mackayn.png "Norman Mackay")](https://github.com/mackayn) +[![Certify The Web](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/certifytheweb.png "Certify The Web")](https://github.com/certifytheweb) +[![Ix Technologies B.V.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/IxTechnologies.png "Ix Technologies B.V.")](https://github.com/IxTechnologies) +[![David JENNI](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/davidjenni.png "David JENNI")](https://github.com/davidjenni) +[![Jonathan ](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Jonathan-Hickey.png "Jonathan ")](https://github.com/Jonathan-Hickey) +[![Oleg Kyrylchuk](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/okyrylchuk.png "Oleg Kyrylchuk")](https://github.com/okyrylchuk) +[![Charley Wu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/akunzai.png "Charley Wu")](https://github.com/akunzai) +[![Jakob Tikjøb Andersen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jakobt.png "Jakob Tikjøb Andersen")](https://github.com/jakobt) +[![Seann Alexander](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/seanalexander.png "Seann Alexander")](https://github.com/seanalexander) +[![Tino Hager](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tinohager.png "Tino Hager")](https://github.com/tinohager) +[![Mark Seemann](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/ploeh.png "Mark Seemann")](https://github.com/ploeh) +[![Angelo Belchior](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/angelobelchior.png "Angelo Belchior")](https://github.com/angelobelchior) +[![Ken Bonny](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KenBonny.png "Ken Bonny")](https://github.com/KenBonny) +[![Simon Cropp](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/SimonCropp.png "Simon Cropp")](https://github.com/SimonCropp) +[![agileworks-eu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/agileworks-eu.png "agileworks-eu")](https://github.com/agileworks-eu) +[![sorahex](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/sorahex.png "sorahex")](https://github.com/sorahex) +[![Zheyu Shen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/arsdragonfly.png "Zheyu Shen")](https://github.com/arsdragonfly) +[![Vezel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/vezel-dev.png "Vezel")](https://github.com/vezel-dev) + + + + +[![Sponsor this project](https://raw.githubusercontent.com/devlooped/sponsors/main/sponsor.png "Sponsor this project")](https://github.com/sponsors/devlooped) +  + +[Learn more about GitHub Sponsors](https://github.com/sponsors) + +