1
0
mirror of https://github.com/alexandrev/xslt-lab.git synced 2026-09-16 18:23:16 +00:00

SEO: target striking-distance keywords + strengthen landing pages and blog

Phase 1 (home): add explicit "viewer", "validate xslt online" and
"xslt transformation online" coverage in copy, meta keywords, a new
section and a FAQ entry (+ JSON-LD) to lift queries stuck at position 8-10.

Phase 2 (landing pages): add unique runnable examples with input/output
(for-each-group on /xslt-2-0/, maps + fold-left on /xslt-3-0/) plus
internal links to related blog posts and pre/code styling.

Phase 3 (blog): xsl-online-tester gets links to both version landing pages,
a FAQ block and related guides; xslt-string-functions gets a snippet-bait
summary table and related links.

Adds scripts/seo_report.py to pull GSC + GA4 metrics for tracking progress.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-06-11 17:19:37 +02:00
parent e2fdbfd296
commit f58cb158e0
6 changed files with 357 additions and 6 deletions
+22
View File
@@ -27,6 +27,8 @@ In practice, when people say "XSL" in an integration or development context, the
The output appears immediately. If the stylesheet has errors, the error panel shows the exact line and message from Saxon.
If you already know which version you need, there are dedicated testers: the [XSLT 2.0 online tester](https://xsltplayground.com/xslt-2-0/) for grouping and regular expressions, and the [XSLT 3.0 online tester](https://xsltplayground.com/xslt-3-0/) for maps, arrays and streaming. Both run the same Saxon HE backend.
## Common XSL use cases
**XML to HTML** — the most common use. An XSL stylesheet walks an XML document tree and emits HTML tags:
@@ -96,3 +98,23 @@ For most development and debugging tasks, the online tester is faster than runni
- You need to integrate the transform into a build pipeline
For everything else — prototyping, debugging, sharing test cases — the online XSL tester is quicker.
## Frequently asked questions
**Is there a free XSL online tester?**
Yes. [XSLT Playground](https://xsltplayground.com) is a completely free online XSL tester. It runs XSLT 1.0, 2.0 and 3.0 on a real Saxon HE backend, with no account, signup or installation required.
**Can I run XSL transformations in the browser?**
The editor runs in your browser, but the transformation itself executes on a Saxon server so the results match production exactly — unlike the browser's built-in XSLT 1.0 engine, which is limited and inconsistent across browsers.
**What is the difference between .xsl and .xslt files?**
Both extensions are valid and interchangeable. `.xsl` is older and common in enterprise systems; `.xslt` is more explicit. Saxon and XSLT Playground accept either.
**Can I validate an XSL stylesheet online?**
Yes. If your stylesheet is malformed or has a runtime error, the [XSLT validator](https://blog.xsltplayground.com/posts/xslt-validator-online/) reports the exact line number and the original Saxon error message so you can fix it before deploying.
## Related guides
- [XSLT online editor: how to test transformations without installing anything](https://blog.xsltplayground.com/posts/xslt-online-editor-guide/)
- [XSLT for beginners: your first transformation](https://blog.xsltplayground.com/posts/xslt-for-beginners/)
- [XSLT validator online: catch errors before running your transform](https://blog.xsltplayground.com/posts/xslt-validator-online/)
@@ -7,6 +7,28 @@ tags: ["xslt", "xpath", "strings", "functions"]
String manipulation is one of the most common tasks in XSLT. Whether you are formatting output, parsing codes, or normalising values from external systems, XPath provides a rich set of string functions. This reference covers the most useful ones with examples you can run in [XSLT Playground](https://xsltplayground.com).
## XSLT string functions at a glance
| Function | Purpose | Minimum version |
|---|---|---|
| `string-length` | Number of characters in a string | XSLT 1.0 |
| `substring` | Extract part of a string by position | XSLT 1.0 |
| `substring-before` / `substring-after` | Split a string on a delimiter | XSLT 1.0 |
| `contains` / `starts-with` | Test for a substring or prefix | XSLT 1.0 |
| `concat` | Join strings together | XSLT 1.0 |
| `normalize-space` | Trim and collapse whitespace | XSLT 1.0 |
| `translate` | Replace characters one-for-one | XSLT 1.0 |
| `upper-case` / `lower-case` | Change case | XSLT 2.0 |
| `ends-with` | Test for a suffix | XSLT 2.0 |
| `replace` | Regex-based substitution | XSLT 2.0 |
| `matches` | Test a string against a regex | XSLT 2.0 |
| `tokenize` | Split a string into a sequence by regex | XSLT 2.0 |
| `string-join` | Join a sequence with a separator | XSLT 2.0 |
| `format-number` | Format a number with a picture pattern | XSLT 1.0 |
| `format-date` / `format-dateTime` | Format dates with a picture string | XSLT 2.0 |
Each function is explained with runnable examples below. Try them in the [XSLT 2.0 online tester](https://xsltplayground.com/xslt-2-0/) for the 2.0 functions, or the main [online XSLT editor](https://xsltplayground.com) for the 1.0 ones.
## Basic string functions (XSLT 1.0+)
### string-length
@@ -179,3 +201,9 @@ Format xs:date and xs:dateTime values using picture strings.
All of these work in [XSLT Playground](https://xsltplayground.com). Set the version to 2.0 or 3.0 for the functions that require it.
## Related guides
- [XSLT grouping with xsl:for-each-group](https://blog.xsltplayground.com/posts/xslt-grouping-for-each-group/) — group and aggregate string values
- [Transforming XML to JSON and CSV with XSLT](https://blog.xsltplayground.com/posts/xslt-xml-to-json-csv/) — `string-join` and `tokenize` in practice
- [XSLT template matching explained](https://blog.xsltplayground.com/posts/xslt-template-matching-explained/) — apply string logic inside template rules