3

TridionのアイテムのXML構造(スキーマ、コンポーネント、複合テンプレート、キーワード、カテゴリ、フォルダなど)を取得するにはどうすればよいですか?

Tridionのインストールフォルダまたは他の場所にありますか?または、Tridion UIから直接アクセスする方法はありますか?

4

5 に答える 5

9

これを実現するためにブラウザコンソールで実行できる最も単純なスニペットは次のとおりです。

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();
   }
}
于 2012-06-12T08:33:36.863 に答える
4

プロトコルハンドラーも使用できます。コンテンツ管理サーバーにログインしている場合は、Internet Explorerを起動し、アドレスバーにURIを入力するだけです。任意のアイテムのXML表現が表示されます。ただし、これはIE 9の64ビットバージョンでは機能しません(別の最近のスレッドを参照)。

于 2012-06-12T09:14:33.473 に答える
4

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

于 2012-07-29T18:11:21.093 に答える
1

今回はテンプレートを使用して、少なくともコンポーネントXMLを取得するためのさらに2つの簡単な方法。

注意:特にサポートされているAPIがある場合は、アイテムの生のソースに依存することに注意してください。

XSLTコンポーネントテンプレート

<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>

C#アセンブリテンプレートビルディングブロック(TOM.NET)

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));
        }
    }
}
于 2012-07-21T07:12:11.350 に答える
0

Quirijnが指摘しているように、プロトコルハンドラーの使用はお気に入りの手法です。また、Tridion 2011を使用している場合は、 http: //code.google.com/p/tridion-2011-power-tools/のItemXml拡張機能も非常に便利です。

古いバージョンのTridionを使用している場合は、UIをデバッグモードに設定し、その方法でXMLを調べてみることもできます。

于 2012-06-12T22:14:58.447 に答える