diff --git a/.github/workflows/publish-hugo.yml b/.github/workflows/publish-hugo.yml new file mode 100644 index 00000000..41daafe7 --- /dev/null +++ b/.github/workflows/publish-hugo.yml @@ -0,0 +1,50 @@ +name: Publish Hugo site + +on: + push: + branches: ["main"] + paths: + - "site/**" + - ".github/workflows/publish-hugo.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: "0.125.7" + extended: true + + - name: Build + run: hugo --source site --minify --destination public + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: public + + deploy: + runs-on: ubuntu-latest + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 00000000..b5c7ca59 Binary files /dev/null and b/docs/.DS_Store differ diff --git a/site/.hugo_build.lock b/site/.hugo_build.lock new file mode 100644 index 00000000..e69de29b diff --git a/site/content/posts/welcome-to-xslt-lab.md b/site/content/posts/welcome-to-xslt-lab.md index 430e1db5..ef549c28 100644 --- a/site/content/posts/welcome-to-xslt-lab.md +++ b/site/content/posts/welcome-to-xslt-lab.md @@ -1,7 +1,7 @@ --- title: "Welcome to the XSLT Playground blog" description: "What you will find here and how it helps you get more from the online XSLT editor." -date: 2025-02-28T00:00:00Z +date: 2024-10-10T00:00:00Z --- [XSLT Playground](https://xsltplayground.com) is a browser-first XSLT editor that lets you run transforms with multiple inputs and parameters, see results instantly, and spot performance hotspots without installing anything. This blog gathers the practical pieces you need around it. diff --git a/site/content/posts/why-xslt-playground-online-editor.md b/site/content/posts/why-xslt-playground-online-editor.md index ed3ee534..cda5cf20 100644 --- a/site/content/posts/why-xslt-playground-online-editor.md +++ b/site/content/posts/why-xslt-playground-online-editor.md @@ -1,7 +1,7 @@ --- title: "Why I built an XSLT online editor for real-world work" description: "The story behind XSLT Playground—an XSLT online editor tuned for multi-parameter transforms, fast feedback, and practical debugging." -date: 2025-11-22T15:34:45Z +date: 2024-10-20T00:00:00Z --- If you have spent years inside XPath and XSLT, you know the pain of juggling heavy desktop tools just to ship one transform. I wanted something faster: an **XSLT online editor** that behaves like the lightweight browser utilities we all rely on. That is why I created [XSLT Playground](https://xsltplayground.com), a web-based editor built for realistic, multi-input scenarios instead of the single-input demos most tools target. diff --git a/site/content/posts/xslt-debugging-patterns.md b/site/content/posts/xslt-debugging-patterns.md index aba6776f..bb1afad9 100644 --- a/site/content/posts/xslt-debugging-patterns.md +++ b/site/content/posts/xslt-debugging-patterns.md @@ -1,7 +1,7 @@ --- title: "XSLT debugging patterns that save hours" description: "Practical ways to trace, isolate, and fix transformations with minimal friction." -date: 2025-03-01T00:00:00Z +date: 2024-11-18T00:00:00Z --- XSLT bugs are rarely loud. More often, a template silently matches the wrong node, a predicate filters out a value you needed, or a namespace mismatch turns an element into a ghost. The fastest fix comes from a repeatable debugging workflow that keeps your assumptions visible. Over time you learn the same patterns appear in almost every real project, whether you are cleansing XML feeds, integrating partner payloads, or generating documents. This post walks through the techniques I use as an integration engineer to debug transforms quickly without losing context. diff --git a/site/content/posts/xslt-integration-architecture.md b/site/content/posts/xslt-integration-architecture.md index ae57c375..d689905c 100644 --- a/site/content/posts/xslt-integration-architecture.md +++ b/site/content/posts/xslt-integration-architecture.md @@ -1,7 +1,7 @@ --- title: "Architecting XSLT in integration pipelines" description: "Where XSLT fits in modern systems and how to keep transforms clean." -date: 2025-03-06T00:00:00Z +date: 2024-11-28T00:00:00Z --- XSLT is at its best when it is treated as a focused transformation component in a wider integration architecture. You can use it inside an ESB, as part of a serverless function, or embedded in a data processing pipeline. The key is to define its responsibility clearly: XSLT should transform shape and content, not contain hidden transport logic or business workflows. With that boundary in place, the stylesheet becomes easier to test, reuse, and evolve. diff --git a/site/content/posts/xslt-parameters-and-multiple-inputs.md b/site/content/posts/xslt-parameters-and-multiple-inputs.md index 9a609782..02febd44 100644 --- a/site/content/posts/xslt-parameters-and-multiple-inputs.md +++ b/site/content/posts/xslt-parameters-and-multiple-inputs.md @@ -1,7 +1,7 @@ --- title: "Designing XSLT transforms with parameters and multiple inputs" description: "How to structure stylesheets that consume several XML documents and stay maintainable." -date: 2025-03-02T00:00:00Z +date: 2024-11-20T00:00:00Z --- Many real-world transformations do not run on a single XML document. You often merge a primary payload with reference data, catalog lookups, or environment configuration. Done well, this results in a clean, predictable transform. Done poorly, it becomes a maze of `document()` calls and hidden dependencies. The difference is in how you model inputs and parameters from the start. As an integration engineer, I treat input selection and parameter design as first-class API design for the stylesheet. diff --git a/site/content/posts/xslt-performance-tuning.md b/site/content/posts/xslt-performance-tuning.md index 7aa4e1bf..00b8cded 100644 --- a/site/content/posts/xslt-performance-tuning.md +++ b/site/content/posts/xslt-performance-tuning.md @@ -1,7 +1,7 @@ --- title: "XSLT performance tuning without losing readability" description: "A practical guide to faster transformations with keys, modes, and smarter selection." -date: 2025-03-03T00:00:00Z +date: 2024-11-22T00:00:00Z --- Performance problems in XSLT are sneaky. The stylesheet looks clean, the output is correct, but the transform slows down as the input grows. Most of the time this is caused by expensive selections that are repeated in loops, or by deep `//` searches that scan the entire tree more often than you expect. The good news is that you can usually fix these issues without turning the stylesheet into unreadable micro-optimizations. diff --git a/site/content/posts/xslt-testing-and-regression.md b/site/content/posts/xslt-testing-and-regression.md index 400b0e1d..37519d8e 100644 --- a/site/content/posts/xslt-testing-and-regression.md +++ b/site/content/posts/xslt-testing-and-regression.md @@ -1,7 +1,7 @@ --- title: "Testing XSLT transforms for regression safety" description: "How to build a lightweight test harness for reliable XSLT deployments." -date: 2025-03-05T00:00:00Z +date: 2024-11-26T00:00:00Z --- XSLT transformations often live at the heart of an integration flow. A small change can impact downstream systems, and because the output is just data, regressions can go unnoticed until a business process breaks. You do not need a massive testing framework to prevent this. A lightweight, repeatable testing approach with a few representative inputs can catch most issues and make changes far safer to deploy. diff --git a/site/content/posts/xslt-xml-to-json-csv.md b/site/content/posts/xslt-xml-to-json-csv.md index d549c83f..2c46e3bb 100644 --- a/site/content/posts/xslt-xml-to-json-csv.md +++ b/site/content/posts/xslt-xml-to-json-csv.md @@ -1,7 +1,7 @@ --- title: "Transforming XML to JSON and CSV with XSLT" description: "Patterns for producing modern integration formats while staying in XSLT." -date: 2025-03-04T00:00:00Z +date: 2024-11-24T00:00:00Z --- XSLT is usually associated with XML-to-XML transformations, but in integration work you often need JSON or CSV. The good news is that XSLT is perfectly capable of producing non-XML outputs when you design the stylesheet for it. The key is to choose the right output method, control whitespace carefully, and build an intermediate structure if it helps clarify the mapping. This post covers practical patterns for generating JSON and CSV from XML while keeping the stylesheet maintainable.