I'm not trying to get the XML for a specific article. I'm trying to get the content type for it. So I'm trying to generate XML for the nodeType. So, some XML looks like this:
So, basically, this document is a TextPage and I want to, I suppose, use the nodeType value in order to determine that. But if I try with your code, or similar code, I get something like this output:
EDIT: You are calling GetXmlNodeById() - but you're not using an Umbraco node id - the @nodeType attribute is a reference to a Document Type, whereas the function you're calling expects the id of a specific Content node.
What you want to do can be done by grabbing the first node of that type and then getting its name() - like this:
<!-- Go up to the absolute root -->
<xsl:variable name="root" select="$currentPage/ancestor::root" />
<!-- Find the first node with the nodeType we're after -->
<xsl:variable name="node" select="$root//*[@nodeType = 1217][1]" />
<!-- Print its name -->
<xsl:value-of select="name($node)" />
If, however, you already have the node in question (like in a for-each or similar), just print the name() - e.g.:
<!-- Going through children of the current page -->
<xsl:for-each select="$currentPage/*[@isDoc]">
<!-- Doing stuff -->
<!-- Print name of current (in loop) node -->
<xsl:value-of select="name()" />
</xsl:for-each>
How to get @nodeType as string
I'm trying to get an output of a node type, and I'm doing this:
<xsl:variable name="contentType" select="umbraco.library:GetXmlNodeById(@nodeType)" />
<xsl:value-of select="$contentType" />
The only output I get is something like this:
"No published item exist with id 1217"
Where @nodeType is 1217.
What am I doing wrong?
I'm on Umbraco 4.7.2, btw.
Hi Edward.
Are you trying to get the XML from a spefic node. If so you can do it like this:
Where the 1234 is the id of the page that you want the XML from.
With this code you will get the node name of the page with the id of 1234
You can find the documentation for the umbraco.library:GetXmlNodeById() here http://our.umbraco.org/wiki/reference/umbracolibrary/getxmlnodebyid
Hope this helps,
If I have misunderstood your questions, please write again.
/Dennis
I'm not trying to get the XML for a specific article. I'm trying to get the content type for it. So I'm trying to generate XML for the nodeType. So, some XML looks like this:
<TextPage id="1206" parentID="1203" level="2" writerID="0" creatorID="0" nodeType="1205" template="1204" sortOrder="1" createDate="2012-05012T11:54:18" updateDate="2013-02-25T23:32:57" naodeName="About" urlName="about" writerName="admin" creatorName="admin" path="-1,1203,1206" isDoc="">
So, basically, this document is a TextPage and I want to, I suppose, use the nodeType value in order to determine that. But if I try with your code, or similar code, I get something like this output:
"No published item exist with id 1205"
Hi Edward,
I think that, you are facing the samme issue as this topic.
http://our.umbraco.org/forum/developers/xslt/3559--GetXmlNodeById-problem
Could it be a file permissions issue like radmanmm experiencing here http://our.umbraco.org/forum/developers/xslt/3559--GetXmlNodeById-problem
Try to check that your file permissions are correct. You can see what permissions should be: http://our.umbraco.org/wiki/reference/files-and-folders/permissions
You could try to install the uGoLive package http://our.umbraco.org/projects/backoffice-extensions/ugolive to check if yourfile permissions are good.
Hope this helps,
/Dennis
Hi Edward,
EDIT: You are calling
GetXmlNodeById()
- but you're not using an Umbraco node id - the@nodeType
attribute is a reference to a Document Type, whereas the function you're calling expects the id of a specific Content node.What you want to do can be done by grabbing the first node of that type and then getting its name() - like this:
If, however, you already have the node in question (like in a for-each or similar), just print the name() - e.g.:
Hope that's what you're after :)
/Chriztian
@Chriztian - Ahh I didn't see that he took the ID of the Document type, and not the ID of the node. Well spotted my friend :-).
/Dennis
is working on a reply...