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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user