TridionのアイテムのXML構造(スキーマ、コンポーネント、複合テンプレート、キーワード、カテゴリ、フォルダなど)を取得するにはどうすればよいですか?
Tridionのインストールフォルダまたは他の場所にありますか?または、Tridion UIから直接アクセスする方法はありますか?
TridionのアイテムのXML構造(スキーマ、コンポーネント、複合テンプレート、キーワード、カテゴリ、フォルダなど)を取得するにはどうすればよいですか?
Tridionのインストールフォルダまたは他の場所にありますか?または、Tridion UIから直接アクセスする方法はありますか?
これを実現するためにブラウザコンソールで実行できる最も単純なスニペットは次のとおりです。
var itemUri = "tcm:...";
var item = $models.getItem(itemUri);
if(item)
{
if(item.isStaticLoaded())
{
console.log(item.getStaticXml());
}
else
{
$evt.addEventHandler(item, "staticload", function() {
console.log(item.getStaticXml());
});
item.staticLoad();
}
}
プロトコルハンドラーも使用できます。コンテンツ管理サーバーにログインしている場合は、Internet Explorerを起動し、アドレスバーにURIを入力するだけです。任意のアイテムのXML表現が表示されます。ただし、これはIE 9の64ビットバージョンでは機能しません(別の最近のスレッドを参照)。
CoreServiceを使用している場合は、次のコードを使用してアイテムのXMLを取得することもできます。
public XmlElement ToR6Xml()
{
DataContractSerializer dcs = new DataContractSerializer(ComponentData);
using(MemoryStream stream = new MemoryStream())
{
dcs.WriteObject(stream, CurrentData);
stream.Position = 0;
XmlDocument document = new XmlDocument();
document.Load(stream);
return document.DocumentElement;
}
}
ただし、これはTridion "R6" Xmlを返しますが、TOM.NETまたはプロトコルハンドラー( "R5" xml)を介して公開されるものとは異なります。
N
今回はテンプレートを使用して、少なくともコンポーネントXMLを取得するためのさらに2つの簡単な方法。
注意:特にサポートされているAPIがある場合は、アイテムの生のソースに依存することに注意してください。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:generic="http://createandbreak.net/schema/generic"
xmlns:tcm="http://www.tridion.com/ContentManager/5.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
exclude-result-prefixes="xsl tcm xlink generic">
<xsl:output omit-xml-declaration="no" indent="yes"
method="xml" cdata-section-elements="description" />
<xsl:variable name="Content" select="/tcm:Component/tcm:Data/tcm:Content" />
<xsl:template match="/">
<xsl:copy-of select="." />
<xsl:apply-templates select="$Content/*" />
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
using Tridion.ContentManager.ContentManagement;
using Tridion.ContentManager.Templating;
using Tridion.ContentManager.Templating.Assembly;
namespace CreateAndBreakTemplates
{
[TcmTemplateTitle("Show XML Guts")]
public class ShowXmlGuts : ITemplate
{
public void Transform(Engine engine, Package package)
{
Item contentItem = package.GetByType(ContentType.Component);
Component component = engine.GetObject(contentItem.GetAsSource().GetValue("ID")) as Component;
package.PushItem("componentSource", package.CreateHtmlItem(component.Content.OuterXml));
}
}
}
Quirijnが指摘しているように、プロトコルハンドラーの使用はお気に入りの手法です。また、Tridion 2011を使用している場合は、 http: //code.google.com/p/tridion-2011-power-tools/のItemXml拡張機能も非常に便利です。
古いバージョンのTridionを使用している場合は、UIをデバッグモードに設定し、その方法でXMLを調べてみることもできます。