2

SharePointで設定したリストビューの簡略版を表示する必要がある公開Webサイトがあります。

ここで説明する手法を使用してビューのXMLを正常に使用していますが、複雑すぎて、jQueryAJAXコードで名前空間を適切に処理できません。

次のXSLTを作成しましたが、問題が発生しています。私はXSLTの初心者なので、事前にご容赦ください。

私のXLSTは次のようになります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
     xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
     xmlns:rs='urn:schemas-microsoft-com:rowset'
     xmlns:z='#RowsetSchema'
>

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
    <activeRFPs>
    <xsl:for-each select="/xml/rs:data/z:row">
        <rfp>
            <title>
                <xsl:value-of select="@ows_RFP_x0020_Link" />
            </title>
            <applicationStart>
                <xsl:value-of select="@ows_Application_x0020_Period_x0020_S" />
            </applicationStart>
            <applicationEnd>
                <xsl:value-of select="@ows_Application_x0020_Period_x0020_E" />
            </applicationEnd>
            <programStart>
                <xsl:value-of select="@ows_Program_x0020_Start_x0020_Date" />
            </programStart>
            <publicURL>
                <xsl:value-of select="@ows_Public_x0020_Guidelines_x0020_Do" />
            </publicURL>
        </rfp>
    </xsl:for-each>
    </activeRFPs>
</xsl:template>
</xsl:stylesheet>

ソースXMLは次のようになります。

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
 xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
 xmlns:rs='urn:schemas-microsoft-com:rowset'
 xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>
  <s:AttributeType name='ows_RFP_x0020_Link' rs:name='RFP Link' rs:number='1'>
     <s:datatype dt:type='string' dt:maxLength='512' />
  </s:AttributeType>
  <s:AttributeType name='ows_Application_x0020_Period_x0020_S' rs:name='Application Period Start Date' rs:number='2'>
     <s:datatype dt:type='datetime' dt:maxLength='8' />
  </s:AttributeType>
  <s:AttributeType name='ows_Application_x0020_Period_x0020_E' rs:name='Application Period End Date' rs:number='3'>
     <s:datatype dt:type='datetime' dt:maxLength='8' />
  </s:AttributeType>
  <s:AttributeType name='ows_Program_x0020_Start_x0020_Date' rs:name='Program Start Date' rs:number='4'>
     <s:datatype dt:type='datetime' dt:maxLength='8' />
  </s:AttributeType>
<s:AttributeType name='ows_Public_x0020_Guidelines_x0020_Do' rs:name='Public Guidelines Doc URL' rs:number='5'>
<s:datatype dt:type='string' dt:maxLength='512' />
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ows_RFP_x0020_Link='http://www.google.com, Google Search Engine' ows_Application_x0020_Period_x0020_S='2012-06-22 00:00:00' ows_Application_x0020_Period_x0020_E='2012-07-20 00:00:00' ows_Program_x0020_Start_x0020_Date='2012-10-01 00:00:00' ows_Public_x0020_Guidelines_x0020_Do='http://www.yahoo.com' />
</rs:data>
</xml>

すべての値はz:row要素の属性です。名前空間の操作方法について少し振り返りました。

Visual Studioで実行すると、出力されるのは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<activeRFPs xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" />

私は何が間違っているのですか?

私はこの構造が欲しいです:

<rfp>
<title>value</title>
<applicationStart>value</applicationStart>
<applicationEnd>value</applicationEnd>
...
</rfp>
4

2 に答える 2

0

私の推測では、VSでドキュメントの[プロパティ]ウィンドウの[入力]フィールドが正しく設定されていません。

http://msdn.microsoft.com/en-us/library/ms255828.aspx

于 2012-06-26T02:40:23.097 に答える
0

どのように変換を実行していますか? シンプルなランナー (インデントを追加) を使用して、.NET 2.0 で次の出力を取得します。

<activeRFPs xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
    <rfp>
        <title>http://www.google.com, Google Search Engine</title>
        <applicationStart>2012-06-22 00:00:00</applicationStart>
        <applicationEnd>2012-07-20 00:00:00</applicationEnd>
        <programStart>2012-10-01 00:00:00</programStart>
        <publicURL>http://www.yahoo.com</publicURL>
    </rfp>
</activeRFPs>

ランナーコードはボイラープレートです:

XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;

XmlReaderSettings xslReaderSettings = new XmlReaderSettings();
xslReaderSettings.ProhibitDtd = false;

XmlReader xmlReader = XmlReader.Create(contentFile, xslReaderSettings);
XslReader xslReader = XmlReader.Create(transformFile, xslReaderSettings);
XmlWriter xmlWriter = XmlWriter.Create(outFile, xmlWriterSettings);

XslCompiledTransform xslt = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;
settings.EnableScript = true;
xslt.Load(xslReader, settings, new XmlUrlResolver());
xslt.Transform(xmlReader, xmlWriter);

これらすべての設定は必要ありません。

于 2012-06-25T20:01:03.043 に答える