c# - How to select an attribute value in an XML and concatenate it with a string and use it as an attribute value in a new XML using XSLT -
i need transform existing xml xml using xslt.
the problem facing need use "typename" attribute ecclass , concatenate http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#
the xml working -
<ecschema> <ecclass typename="abc"> <baseclass>pqr</baseclass> <baseclass>xyz</baseclass> </ecclass> <ecclass typename="ijk"> <baseclass>mno</baseclass> <baseclass>def</baseclass> </ecclass> <ecschema>
for example concatenated result should -
http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#abc first ecclass
i need set string attribute value of rdf:about in owl:class tag in new xml structure.
the new xml structure -
<owl:ontology rdf:about="http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1"> <owl:class rdf:about="http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#abc"> </owl:class> <owl:class rdf:about="http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#abc"> </owl:class> </owl:ontology>
right have not yet tried baseclass. have been trying convert ecclass owl:class.
the xsl -
<xsl:template match="/"> <owl:ontology rdf:about="http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1"/> <xsl:for-each select="ecschema/ecclass"> <owl:class rdf:about="<xsl:value-of select="concat('http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#' , '@typename') />" > </owl:class> </xsl:for-each> </xsl:template>
i have been trying many combinations various sources haven't been able it.
it returns error - "additional information: '<', hexadecimal value 0x3c, invalid attribute character."
can please me new xslt , have been getting lots of errors.
tags cannot nested. achieve purpose, should learn attribute value templates. in addition, code rather sloppy. try way:
<xsl:template match="/"> <owl:ontology rdf:about="http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1"> <xsl:for-each select="ecschema/ecclass"> <owl:class rdf:about="{concat('http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1#', @typename)}" /> </xsl:for-each> </owl:ontology> </xsl:template>
or perhaps bit more elegant:
<xsl:variable name="myurl">http://www.semanticweb.org/aman.prasad/ontologies/2015/5/untitled-ontology-1</xsl:variable> <xsl:template match="/"> <owl:ontology rdf:about="{$myurl}"> <xsl:for-each select="ecschema/ecclass"> <owl:class rdf:about="{$myurl}#{@typename}" /> </xsl:for-each> </owl:ontology> </xsl:template>
Comments
Post a Comment