Split-Reverse Pivot

Hi All
I have one question.
I have source file in XML format which contains data :
                    <Industry_Sector>Z;A;D;F;G</Industry_Sector>
my need is to upload data as         Industry Sectors
                                                            Z
                                                            A
                                                            D
                                                            F
                                                            G
I need to map it to the field Industry Sectors in MDM.
I followed steps :- 1) Split into multiple fields with ; as delimeter on the source side of import manager.
                          2) Selected all split fields and did reverse pivtoing.
When i tried with XML file its hows error "Unable to Create Reverse Pivot"
while when i tried with access i was able to do.
What may the error? or there is any other improve process that i can follow?
Thanks
Himanshu Nijhawan

Hi Himanshu,
As far as i know XML is an updateable data source,so it should allow you to modify the data source.
Pivoting and Reverse pivoting are the options in MDM that need to work with an Updateable data source only.
Please check the READ ONLY option .This option will be checked by default for an XML source.It should be unchecked for updating the XML source file.
You can refer the below links to understand better how Pivoting and Reverse pivoting works in MDM:
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a0a9cee4-9cd1-2a10-62b6-ea2acb06a5a3
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a0a9cee4-9cd1-2a10-62b6-ea2acb06a5a3
Hope It Helped
Thanks & Regards
Simona Pinto

Similar Messages

  • Unequal records Reverse Pivot?

    Hi,
    I have to merge several records into one.
    For example in source i have two cols one with ID in COL1 and text with COL2:-
    COL1     COL2
    123        ABC
    123        DEF
    123        GHI
    567        LMN
    324        PWS
    324        SWX
    890        XZY
    890        SDD
    890        MNO
    Output
    123     ABCDEFGHI
    567     LMN
    324     PWSSWX
    890     XZYSDDMNO
    I tried reverse pivot but the variable COL1 value could not be captured.
    Appreciate your suggestions.
    Arun

    Suneer,
    Thanks Suneer.
    I did as you suggested and wrote a custom function like this:
    IF  ($PRE_COL1 = $CURR_COL1)
    begin
       $COL2 = ' ';     
        $COL2  = $COL2  || $COL2 ;
    end     
    else
    IF  ($PRE_COL1 <> $CURR_COL1)
    begin
         $PRE_COL1 = $CURR_COL1;     
         $COL2  = $COL2 ;
    end
    return 0;
    Here PRE_COL1 = Previous_row_value()
    CURR_COL1 = COL1 value
    There is no error in this, but i am not getting the desired output. Could you help me with the custom function script?
    Thanks and Regards,
    Arun

  • How do I do a reverse pivot in 2010???

    The link below shows how to convert a summary (pivot) table into a normalized data table using Excel 2003 (and maybe 2007). 
    http://spreadsheetpage.com/index.php/tip/creating_a_database_table_from_a_summary_table/
    And here is a video  
    https://www.youtube.com/watch?v=N3wWQjRWkJc
     I have been unable to figure out how to do this in Excel 2010.  Please advise. Thanks.!!!!!
    SOS!!!!!

    Here is the video!  and it works for 2010.  It shows you how to put the pivot wizard that you need on the ribbon.
    https://www.youtube.com/watch?v=pUXJLzqlEPk
    Excel Pivot Tables: How to flatten a cross tab table
    Note:  the above instructions for 2007 and 2003 work as well BUT you must let go of the "alt" & "d" when you press "P"!

  • Can any one tell how to create pivot table

    Hi ,
    Am trying to create a pivot tabel in the MDM Import Manager. Iam able to see the preview of the pivot table which i want to create. But when i try to click "OK" button, an error message getting displayed like...
    "The new table cannot be created because the data source is not updatable.You may need the data source to an updatable format such as Microsoft Access before proceeding".
    Due to the above error am not able to create pivot table, plz let me know if any one know how to solve this problem
    Thanks & regards
    Praveen k

    Hi Praveen ,
       The solution to your problem is -
    The data source must be updateable in order for MDM to
    create the new pivot or reverse pivot table. However, you can still
    perform the steps leading up to table creation – including the preview –
    even on a data source that is not updateable, so that you can explore
    pivoting or reverse pivoting as a transformation option. If you then
    decide you want to actually create the new table, convert the data
    source into a format that is updateable (such as Microsoft Access) and
    perform the pivot or reverse pivot on the new data source.
    To create a pivot table, you must identify the source fields that
    participate in the pivot, which ones contain metadata and which ones
    contain data, which ones must be combined, the one-to-one
    correspondence between metadata and data fields and/or field
    combinations, and the key field or fields.
    To create a pivot table:
    1. In the drop-down list of source tables, make sure the table you want to
    pivot is the current source table.
    2. In the Source Hierarchy tree, select all the field nodes corresponding to
    both the metadata fields and the data fields by which you want to pivot.
    3. Right-click on one of the nodes and choose Create Pivot Table from the
    context menu, or choose Source > Create Pivot Table from the main
    menu
    4. MDM opens the Create Pivot Table dialog
    5. In the Key Fields dual-list drop-down control, move one or more fields
    from the Available Fields list to the Selected Fields list to identify the
    key fields on which to perform the pivot
    6. In the dual-list control of fields, drag-and-drop the data fields from the
    Field Values Become Field Names list to the Field Values Become
    Field Values list
    7. If necessary, select two or more fields in either list that must be
    combined into a field combination, and click on the Combine button, or
    right-click on one of the fields and choose Combine from the context
    menu
    8. If necessary, drag-and-drop fields or field combinations within each list
    to create the one-to-one correspondence between metadata fields and
    data fields.
    9. Click on the Preview button to display a preview of the first ten records
    of the pivot table
    10. When you have verified that the pivot operation you have defined will
    have the desired effect, click OK to close the Create Pivot Table dialog.
    11. The MDM Import Manager creates a new table named “table <Pivot>”
    in the data source (where “table” is the name of the original source
    table).
    12. In the drop-down list of source tables, select the newly created pivot
    table on which to perform subsequent import processing.
    Hope that helps ...
    Regards
    Deepak Singh

  • Reversing selected text or paragraph

    hi all,
    i have a document that contains the lines reversed (for example, Hello All is written llA olleH), so how can i reverse a selected line and reverse the text inside the line (assuming i select each line before i run the script), and also how can i reverse the whole document without needing to select every single line at a time?
    thanks in advance

    Hi,
    Hope you are new to scripting, so kindly use the below script.
    With the help of vandy coding,
    var myLines = app.activeDocument.stories.everyItem().lines.everyItem().getElements();
    for(i=0; i<myLines.length; i++)
        if(myLines[i].contents.match(/^\r/) !=null)
            continue;
        app.select(myLines[i].characters.itemByRange(0, -2));
        alert("select line")
        myString = app.selection[0].contents; 
        myString = myString.split("").reverse().join(""); 
        app.selection[0].contents = myString; 
    Regards
    Siraj

  • Reversing a string?

    How would I go about reversing a string? I can't think of an
    effective way to do this.

    Here's a quick and dirty one:
    var f = "Hello World!";
    trace(f.split("").reverse().join(""));
    Dave -
    Adobe Community Expert
    www.blurredistinction.com
    www.macromedia.com/support/forums/team_macromedia/

  • Overview of Import Manager

    Friends,
    Iam new to MDM.Could anybody give an overview of Import Manager.I have very less time to prepare for MDM.I need the basic topics in MDM for presentation.This topics must lead the consultant to work on MDM.
    Reward points will be awarded for suitable answers.

    Hi,
    Import Manager is basically used to import data in the selected repository.
    Initially When you launch Import manager it asks you for repository name,language and username & password(can be Admin or one specified in console)
    Then next step it asks you for
    1.)Type(type of source file i.e excel,access,port(in case of remote system),ODBC,XML).
    2)Remote system(MDM For local desktop or ABCfor client system)
    3)Filename
    Then you select the source file and destination table.
    Then source preview tab you can see the source data ,In partition tab you can create combination of fields for say hierarchy.In Map fields you should map corresponding  source and destination fields and values .
    In Match Records tab you select the field as per the uniqueness of this field records are imported.selected import action as create for first import.
    In Import Status if its ready to import  execute import.
    Other features of Import manager include pivoting ,reverse pivoting,split in hierarchy,split in multiple fields,convert data values etc.
    reward points if helpful
    Regards
    Nisha
    Edited by: Nisha Lalwani on Feb 14, 2008 2:20 PM

  • Export to Excel - Multiple Tables in a single details section

    Hi All,
    I have a set of reports where I am using a single details section to show multiple tables stacked over one another. That is, i have a table with three columns and two rows, followed by some white space and then another table with 4 columns and 1 row, followed by white space and then other tables.
    When I export it to excel, I am getting the data but the ordering is in a reverse pivoted fashion:
    Excel output:
    CR_column1_Heading    CR_Column2_Heading    CR_Column1_Data CR_Column2_Data
    Is there a way to control the sequence of fields displayed in excel while exporting?
    Thanks.
    - Atif.

    @Carl,
    It is printing like this.
    HEADER1   HEADER2    HEADER3     DATA 1     DATA 2     DATA 3
    I am getting all the columns and fields in excel, that is not a problem. However, the problem is whether i can control the order the fields are printed onto Excel.
    Like what Ben is commenting:
    HEADER1   DATA 1     HEADER2    DATA 2     HEADER3     DATA 3
    However, I dont want to reorder the fields on the canvas as the format layout is predefined.
    I tried searching through the Cystal SDK if there is a finer level of control but to no avail.
    A work around under the above constraints would be simply amazing!
    Thanks again and appreciate your response.
    Regards,
    Atif.

  • Source file structure when importing a qualified table

    Hello MDM:ers
    I need to import a qualified table into the following repository
    (it is simplified to illustrate the problem):
    Main table: Products
    Fields: ID (int), Name (Text), Part number (Qualified)
    Qualified Table: Part Numbers
    Fields: Manufacturer (Lookup), Part Number (Text)
    Lookup table: Manufacturers
    Fields: Name (Text)
    The source file is a very large text file that has the following structure:
    Part ID          Name     Part no. Manuf 1     Part no. Manuf2
    123          Nut     ABC               XYZ
    456          Bolt     DEF               QWV
    The result I’m looking for Is to map a file structured a above so that two main table records are created (Nut and Bolt) which both have two qualified table records for each manufacturer. I have not been able to create such a map. I have tried to partitioning and combining fields without success.
    I have no problem creating the map if I manually restructure the file to look like:
    Part ID          Name     Manufacturer           Part Number
    123          Nut     Manufacturer 1          ABC
    123          Nut     Manufacturer 2          XYZ
    456          Bolt     Manufacturer 1          DEF
    456          Bolt     Manufacturer 2          QWV
    It where a way to import the file directly in MDM without restructuring it?

    Hi Alexander,
    MDIS will not work fine if you have multiple tables as the mapping is saved only for 1 table. If you have multiple tables then after performing the process of Pivoting/Reverse pivoting, you will have to use joins.
    Join the other tables as Lookup in the Main Table
    Save all your configuration in a map. And then configure the map in the port.
    It should then work with the MDIS also.
    hope it helps.
    Thanks and Regards
    Niitn Jain

  • Business Objects Edge SP2

    Hello,
    Does anyone have any updated information as to when SP2 will be released for Edge?
    I have an issue with version 3.1 regarding a reverse pivot not giving correct results, which I think is addressed in this fix:
    ADAPT01316434
    Reverse Pivot transforms produced incorrect result when a Table Comparison transform appears in the downstream in the same data flow.
    For info - a workaround to this problem is to include a temporary table connected directly to the reverse pivot, as well as the rest of your flow. Not ideal, but it does then function correctly.
    Thanks,
    Rhodri

    I installed the business object edge series and business object edge integration. The guide of edge integration tells to confirm if the file sap_desktop.war exists, and this file WASN'T created. Does anyone knows why??

  • Time Series Data Mining

    All,
    I'd like to know how to model a time series table to submit it to Oracle Data Mining. I've already tried a reverse pivot, but is there something different?
    Regards,
    Paulo de Tarso Costa de Sousa

    If you are trying to do something like create a demand forecasting model like ARIMA, ODM does not have explicit support for this type of modeling. Data mining is usually more about creating a "prediction" rather than a forecast. You may want to look at Oracle's OLAP capabilities for this.
    If you are trying to include variables that contain the element of "time", such as "blood pressure before" and "blood pressure after", you can include these a variables (attributes) in the model. ODM has no real limit on the number of variables it can include in the model, so you don't have to worry about creating too many of them (usually).
    You may want to "clump" the data so as to create a set of variables at certain check points in time like the "before" and "after" approach above. Rather than entering for example the measurement off an instrument ever 10 seconds (which would ordinarily create new variables for each time period), you may want to only detect "events". That is, only record the amount of time between events--sort of Mean Time Between Failure (MTBF) type of modeling.
    Hope this helps with your thinking about how to approach your problem

  • Error # 1084 issue

    Trying to work through a tutorial and have got myself stumped.  The error is 1084: Syntax error: expecting rightparen before colon.
    The function in question is _reverseString
    package{
        import flash.display.*;
        import flash.net.*;
        public class main extends MovieClip{
        // variables
            private const maxCount:uint = 5;
            private const baseURL:String = "http://gtwebconcepts/tim";
            public var userName:String = "Timmy G";
            private var _countIndex:uint;
            private var _foundNumber:Boolean;
        //constructor
            public function main(){
                trace("can you hear me now?");
                //loadSite();
                //countLoop();
                _reverseString(val:String);//########## error 1084
                //_isEvenNumber(num:Object);
            //public methods
            public function loadSite():void{
                navigateToURL(new URLRequest(baseURL), "_blank");
            public function countLoop():void{
                for(var i:uint = 1; i<= maxCount; i++){
                    trace("loop " +i+ " of  " + maxCount);
            //private methods
            private function _reverseString(str:String):String{
                var tmp:Array = str.split("").reverse();
                return tmp.join("");
            private function _isEvenNumber(num:Number):Boolean{
                return(num % 2 == 0);

    you need to define val and use:
    package{
        import flash.display.*;
        import flash.net.*;
        public class main extends MovieClip{
        // variables
            private const maxCount:uint = 5;
            private const baseURL:String = "http://gtwebconcepts/tim";
            public var userName:String = "Timmy G";
            private var _countIndex:uint;
            private var _foundNumber:Boolean;
        //constructor
            public function main(){
                trace("can you hear me now?");
                //loadSite();
                //countLoop();
                _reverseString(val);//########## error 1084
                //_isEvenNumber(num:Object);
            //public methods
            public function loadSite():void{
                navigateToURL(new URLRequest(baseURL), "_blank");
            public function countLoop():void{
                for(var i:uint = 1; i<= maxCount; i++){
                    trace("loop " +i+ " of  " + maxCount);
            //private methods
            private function _reverseString(str:String):String{
                var tmp:Array = str.split("").reverse();
                return tmp.join("");
            private function _isEvenNumber(num:Number):Boolean{
                return(num % 2 == 0);

  • Adobe InDesign Middle Eastern CS6

    Hi
    Where is the link to Adobe InDesign Middle Eastern CS6 Trial Download?
    Thank you

    There are a lot of easy scripting solutions.
    You can type your hebrew forward and then select it and then run this script
    app.selection[0].contents=app.selection[0].contents.split("").reverse().join("")
    before
    after
    There are better ways of doing this but I'm scared Harb's will beat me up or even worse not answer my questions on the forum so you should go for In-Tools plug in.
    It seems that one can get creative cloud in Israel now and if not it must be coming very soon as the adobe Israel site is full of it.
    If you have a US, UK etc. address then you can for sure sucribe to it from Israel.
    החלצהב
    Trevor

  • Programming challenges

    This thread serves as a collection of small (solvable in less than 1 hour), but yet not trivial programming challenges. Please feel free to post your solution below, but try to avoid lengthy discussions.
    1. Challenge:
    Create a program to print the solution for any given (solvable, i.e. no guessing is needed) sudoku puzzle. Puzzles are represented as follows:
    5 3 0 0 7 0 0 0 0
    6 0 0 1 9 5 0 0 0
    0 9 8 0 0 0 0 6 0
    8 0 0 0 6 0 0 0 3
    4 0 0 8 0 3 0 0 1
    7 0 0 0 2 0 0 0 6
    0 6 0 0 0 0 2 8 0
    0 0 0 4 1 9 0 0 5
    0 0 0 0 8 0 0 7 9
    2. Challenge:
    Create a program which takes a conjugated (regular) verb from in the present tense in various languages and tells you the language and the infinitive of the verb.
    For simplicity's sake, I'll narrow it down a bit further: The program should be able to recognize German regular verbs (see "spielen"), Portuguese verbs on -ar (see "falar") and French verbs on -ir (see "choisir")
    Example session:
    $ ./lang kennst
    German: kennen
    ./lang cantam
    Portuguese: cantar
    ./lang finit
    French: finir
    If you want to suggest another challenge, please write me a mail. Remarkable solutions (very fast, small or elegant) for each challenge will be highlighted.
    Last edited by wuischke (2008-03-02 13:12:33)

    wuischke wrote:
    OK, I'll post my solution as well. Written in ansi-C. It's sometimes very ugly (particularly the code to clear the square), well, but it works. You can add a call to the "PrintField" function before adding each value to see how this solver works.
    I've seen incredibly small solvers written in Haskell - anyone here who knows functional programming languages well enough to post a nice solution?
    This is a late solution to the first one.
    This haskell solver isn't too small, but it is fast, and does guess when it gets stuck.
    I used a similar strategy to yours: fill a list of lists with lists of candidates, and repeatedly check rows, columns, 3x3 squares (with wheel), and eliminate taken numbers (which also including 1 if we already have [1,2] in two spots).
    It's a bit long, but it does guess once the above strategy stops changing the square, which solves all the newspaper problems I've tried (some of which end up taking the algorithm to maybe 15 dead ends: without guessing, those could probably be solved more intelligently using linear algebra (the problem is still np) (since each row,col,3x3 totals 45, giving at least as many equations as knowns), which would be elegant, but probably less efficient and more confusing)
    My parser takes files without spaces, since I like it that way.
    Ex:
    53__7____
    6__195___
    _98____6_
    8___6___3
    4__8_3__1
    7___2___6
    _6____28_
    ___419__5
    ____8__79
    Here it is:
    module Main where
    import Control.Monad
    import Data.Maybe
    import Data.Char (digitToInt,intToDigit)
    import Data.List (nub,transpose,group,sort)
    import Debug.Trace
    import System.Environment
    type MagicSq = [[[Int]]]
    main = do f <- getArgs
    if null f then error "specify one or more sudoku problem files to solve"
    else mapM (\x -> unparseSq . solPret . rowsPar =<< readFile x) f
    sol :: (Monad m) => [MagicSq] -> m [MagicSq]
    sol = liftM (concat) . mapM sol'
    sol' :: (Monad m) => MagicSq -> m [MagicSq]
    sol' = let y x = mapMaybe wheel $ x
    ty x = let yx = y x in trace ("branch of: " ++ show (length yx)) yx
    in return . y . branch
    solPret x = let f x = untillSame $ scanl (>>=) (sol x) $ repeat sol
    -- somewhere magicSq is reversed... corrected here
    goodSol x = if length x == 1 then return $ reverse $ head x
    else fail "multiple, possibly incomplete solution found"
    in join $ goodSol =<< f (wheel' x)
    branch :: MagicSq -> [MagicSq]
    branch x = if isSolved x then [x]
    else map (unConcat x) $ branchRow $ concat x
    where
    unConcat o = segment $ length o
    branchRow = bR []
    bR a [] = []
    bR a (l:ls)
    | length l == min = map (\split -> (reverse a) ++ [split]:ls) l
    | otherwise = bR (l:a) ls
    where min = minimum $ filter (1/=) $ map length (l:ls)
    wheel x = untillSame $ scanl (>>=) (wheel' x) $ repeat wheel'
    wheel' x = rowCk x >>= zoneApp rowCk >>= colCk
    untillSame (l:m:ms) = if l == m then l else untillSame (m:ms)
    rowCk,colCk :: (Ord a, Show a, Monad m) => [[[a]]] -> m [[[a]]]
    rowCk x = let exclCks x = foldr (=<<) (return x) $ map (exclusionCk) [1..2]
    y = map (exclCks) x
    --y = map (totalOneCk) x
    in if Nothing `elem` y then fail "A row failed"
    else return (map fromJust $ y)
    colCk = liftM transpose . rowCk . transpose
    zoneApp f = liftM (zC 3) . f . zC 3
    zC _ [] = []
    zC _ [[[]]] = [[[]]]
    zC z l = let (i,ls) = splitAt z l
    nrs = map (segment z) i
    headGr x | null $ concat $ concat x = []
    | otherwise = concatMap (head) x : headGr (map tail x)
    in if length l `mod` z == 0
    then headGr nrs ++ (zC z ls)
    else error $ "square edge length:" ++ show (length l)
    ++ "does not divide by: " ++ show z
    segment n l = let (a,as) = splitAt n l
    in if null as then [a] else a:segment n as
    rowsPar = parseSq . par' [] []
    where
    par' a b [] = (a)
    par' a b ('\n':xs) = par' (reverse b :a) [] xs
    par' a b (x:xs) = par' a (x:b) xs
    parseSq :: [String] -> MagicSq
    parseSq p@(m:ms) = if length m /= length p
    then error "Must use a square grid"
    else map (\x -> map (options) x) p
    where
    options x | x `elem` ['1'..intToDigit (length m)] = [digitToInt x]
    | otherwise = [1..length m ]
    unparseSq x = if isSolved x
    then putStrLn $ unlines $ map show $ map (concatMap (map intToDigit)) x
    else putStrLn $ unlines $ map show $ map (map (map intToDigit)) x
    isSolved x = (length x)^2 == (length $ concat $ concat x)
    totalOneCk l = let decided = concat $ filter (\x -> 1 == length x) l
    uniqueL x = length x == length (nub x)
    f x = if length x == 1 then x
    else filter (\x -> x `notElem` decided) x
    in if uniqueL decided then return $ map (f) l
    else fail $ "Invalid row: " ++ show decided
    -- this is a generalization of the totalOneCk; candidates are eliminated
    -- based on the values in n same candidate lists of n length
    exclusionCk :: (Monad m, Ord a, Show a) => Int -> [[a]] -> m [[a]]
    exclusionCk n l =
    let areLen = filter (\x -> n == length x)
    ggs = group $ sort $ areLen l
    ugPairs = areLen ggs
    removals = map (head) ugPairs
    maxGG = maximum $ map length $ ggs
    errPP = fail $ "Length " ++ show n
    ++ " overbooked: " ++ show ggs
    ++ "\nIn: " ++ show l
    -- The actual filter
    f l [] = l
    f l (r:rs)
    | length l == 1 = l
    | l == r = l
    | otherwise = f (filter (\x -> x `notElem` r) l) rs
    manage | null ugPairs = return l
    | maxGG > n = errPP
    | otherwise = return $ map (\l -> f l removals) l
    in manage
    edit: changed branch (guessing) to take the first smallest branch.
    Last edited by vogt (2008-08-08 00:56:00)

  • Simple InDesign script - Illustrator help

    I have this script by Peter Kahrel that reverese the order of letters in InDesign.
    I need an Illustrator version of it. Can anybody help?
    //ReverseText.jsx
    //An InDesign Javascript that reverses the order of any selected text.
    //If no text is selected with the Type tool, nothing happens.
    //Written by Peter Kahrel for InDesignSecrets.com
    #target indesign
    if ( "TextWordLineParagraph".search ( app.selection[0].constructor.name ) < 0 )
        exit();
    s = app.selection[0].contents;
    s = s.split("").reverse().join("");
    app.selection[0].contents = s;
    Mainly using this for Arabic text in CS 3 and 4 for clients that don't have new versions - and will never buy it apparently.
    Works great in InDesign. I've been putting the text in ID and then copying it into Illustrator. But it would be nice to skip that step if possible.
    Thanks in advance.

    here you go, this version works with current selection (text range), and with single or multiple text frames selected.
    //ReverseText.jsx
    //An InDesign Javascript that reverses the order of any selected text.
    //If no text is selected with the Type tool, nothing happens.
    //Written by Peter Kahrel for InDesignSecrets.com
    // Ported to Illustrator by CarlosCanto // 12/06/12
    // Usage:select a range of text in a text frame, or a text frame or multiple text frames before running
    #target Illustrator
    function reverseString(s) {
        return s.split("").reverse().join("");
    var idoc = app.activeDocument;
    var sel = idoc.selection;
    if (sel.typename == "TextRange") {
        sel.contents = reverseString (sel.contents);
    else if (sel.length>0) {
              for (i=0; i<sel.length; i++) {
                        if(sel[i].typename == "TextFrame") {
                                  var itext = sel[i];
                                  itext.contents = reverseString (itext.contents);

Maybe you are looking for