But all it produced was a blank html page and not the words "Hello world". Well, you're not the only one!
If the xml data you are processing with your stylesheet contains a default namespace, that is, a namespace without a prefix, you can't just match these nodes in your stylesheet as you would normally do.
According to the requirements document for xslt 2.0, you have to assign a non-null prefix to the default namespace in your xsl and use this prefix in your xpath expressions:
2.1 Must Allow Matching on Default Namespace Without Explicit Prefix
Many users stumble trying to match an element with a default namespace. They expect to be able to do something like:
thinking that leaving off the prefix from the foo element name, that it will match <foo> elements in the default namespace with the URI of urn:myuri. Instead, they are required to assign a non-null prefix name to their namespace URI and then match on "someprefix:foo" instead, which has proven to be far from obvious . XSLT 2.0 SHOULD provide an explicit way to handle this scenario to avoid further user confusion.
So, in order to create the output: "Hello world" from our xml file, all we have to do is assign the prefix!