Hi,

I am currently creating classification hierarchies for custom variables that were built onto my website.  It is a content site that has videos and games and various other things on it.  As a test, I wanted to take the various video and game names (and other site contents) and dump them into classifications to make an easier to read report.  However, after going through the steps, the new classification report only has one row- "Unspecified" with the total traffic as the metric.  How can I fix this?

Here is the process of what I did:

1. Went into report suites, found the Traffic Variable "Page Name" and created a classification titled "Page Name Classification Test."  I also added in optional drop downs such as "Homepage", "Games", "Videos" etc for the different data buckets I want.
2. Went to Classification Importer and Browser Exported the classification from the Page Name variable.  Exported everything at the default settings.
3. I then went to my Page Name report to extract all the data from it, so that I would have the Key Names for my classification. I copied the page names into the exported Tab  (which I opened with the default delimiters).
4. Here is an example of what my workbook would look like:
5. | ## SC | SiteCatalyst SAINT Import File | v:2.1 |
| ## SC | '## SC' indicates a SiteCatalyst pre-process header. Please do not remove these lines. |
| ## SC | D:2014-11-13 08:22:53 | A:300000584:1005 |
| Key | Page Name Classification Test |
|  |  |  |
| homepage | Homepage |
| fun game | Games |  |
| video clip | Videos |  |
6. I save the file as a .txt and successfully upload it to the report/variable.
7. I check my output and the attachment is what I got.

Any insight into why this is happening? Is there some syntax error I'm missing in my classification workbook?

Thank you

Adam





 
 Solved!
 
 [Go to Solution.](/t5/adobe-analytics-questions/how-can-i-get-classifications-to-output-correctly-to-the-new/m-p/397907#M27359)
Since this is an older post, I'm assuming you've solved this issue. Incase others find this post, I'll post the link to the documentation below


 


[https://experienceleague.adobe.com/docs/analytics/components/classifications/c-sub-classifications.h...](https://experienceleague.adobe.com/docs/analytics/components/classifications/c-sub-classifications.html?lang=en#classifications)




[View solution in original post](/t5/adobe-analytics-questions/how-can-i-get-classifications-to-output-correctly-to-the-new/m-p/397907#M27359)
try:



```
echo "document.write(\"<div class=\"txt\">Pagerank: ".$rank->pagerank." <br>\")";
echo "document.write(\"Alexa: ".$rank->alexa_rank."</div>\")";
```

in the PHP-code.  

If it doesn't help then open that JS directly in your browser and tell us the error-reporting. <p>is the page generating search traffic? would it be possible to change the content of the page so that you are in compliance and still able to get the traffic?</p>
<p>you absolutely need to address the dmca, but i would start with a 301 redirect in order to recoup any value the page had rather than a 404. that is if you can't find another purpose for the page, such as changing the content.</p> hi,
thanks that does help tremendously! what you're dealing with is a "wait until ready" timeout condition. in other words test studio timed out waiting for the browser to say "i'm done downloading and rendering all the data for this website". there is a global setting for this which has a default value of just 30 seconds. it is the "client ready timeout" setting as shown in the [last figure on this page](http://www.telerik.com/automated-testing-tools/support/documentation/user-guide/test-execution/quick-execution.aspx) for quick execution. an equivalent setting exists in [the test list settings](http://www.telerik.com/automated-testing-tools/support/documentation/user-guide/test-execution/test-list-settings.aspx) when running your tests as part of a test list..  

  

if you don't want to set it globally (which can make sense to have the timeout much shorter for the remainder of your test) you'll have to resort to performing your navigate step in code... but it's pretty easy. try this:  

  


`int` `oldvalue = manager.settings.clientreadytimeout;`
`manager.settings.clientreadytimeout = 360000;`
`activebrowser.navigateto(``"my website here"``);`
`manager.settings.clientreadytimeout = oldvalue;`




kind regards,  

 cody   

the telerik team


do you want to have your say when we set our development plans?
do you want to know when a feature you care about is added or when a bug fixed?
explore the [telerik public issue tracking](http://www.telerik.com/support/pits.aspx)
system and vote to affect the priority of the items For anyone having similar problems, I have solved my issue. It was several-fold.


* As Darren suggested and Paul backed up, the Max..Size properties in the configuration needed to be enlarged. The SvcTraceViewer utility helped in determining this, but it still does not always give the most helpful error messages.
* It also appears that when the Service Reference is updated on the client side, the configuration will sometimes not update properly (e.g. Changing config values on the server will not always properly update on the client. I had to go in and change the Max..Size properties multiple times on both the client and server sides in the course of my debugging)
* For a DataTable to be serializable, it needs to be given a name. The default constructor does not give the table a name, so:



```
return new DataTable();

```

will not be serializable, while:



```
return new DataTable("someName");

```

will name the table whatever is passed as the parameter. 


Note that a table can be given a name at any time by assigning a string to the `TableName` property of the DataTable.



```
var table = new DataTable();
table.TableName = "someName";

```


Hopefully that will help someone. May be the function is executed before the document is ready.
Try to use document.ready function like this:



```
$( document ).ready(function() {
    $('#machines').change(function() {
        var $selected = $(this).find(':selected');
        $('#description').html($selected.data('description'));
    }).trigger('change');
});

``` Try it like this:



```
pathDiagram(
              model=ete.sem
            , file="PathDiagram"
            , max.rank=paste("item", 1:17, sep="")
            , ignore.double=FALSE
            , edge.labels="values"
            , size=c(8, 8)
            , node.font=c("Helvetica", 10)
            , edge.font=c("Helvetica", 10)
            , rank.direction="LR"
            , digits=3
            , standardize=TRUE
            , graphics.fmt="pdf"
            )

        

        
        
        
 (adsbygoogle = window.adsbygoogle || []).push({});
 
        

    
```


  




 (adsbygoogle = window.adsbygoogle || []).push({});
 
  

This will create it `PathDiagram.pdf`
  




 (adsbygoogle = window.adsbygoogle || []).push({});
 
  

in your working directory. I don't know anyway to display the graph in R.


 ![enter image description here](https://fooobar.com//img/766a7d8d75d3c8dae69e8be5738bed8a.png) A few things to try.


1. Use [Variable Tables](http://odetocode.com/Articles/365.aspx) instead -> maybe the import wizard prefers that?
2. Name your return fields.


Try using the following stored proc (untested .. just thinking out loud...)



```
CREATE PROCEDURE dbo.Foo
AS

    SET NOCOUNT ON

    DECLARE @ResultTable TABLE (SomeId INTEGER)

    INSERT INTO @ResultTable
    SELECT DISTINCT Id AS Identity -- Or u can rename this field to anything...
    FROM SomeExistingTableWhichHasAnIdentityField

GO

```

Try that and see if the wizard refreshes, now.


-- 


 Attempt #2 :)


Ok .. when the EF designer/wizard/whatever fails to figure out EXACTLY what my stored proc is suppose to be returning, I usually do the following :-


1. Make sure the stored procedure doesn't exist at all in the EF designer/context, etc. (You have a clean starting point)
2. Open up your stored procedure and `/* /*` comment out *EVERYTHING* after the procedure definition.


eg..



```
ALTER PROCEDURE dbo.Foo
(
    Bar1 INT,
    Bar2 TINYINT,
    ... // whatever u have as your optional input arguments //
)
AS
    SET NOCOUNT ON

    /* 
    .... every thing in here is commented out 
    */
GO

```

Now ...
 3. Add a forced fake return in the stored proc, which (more or less) just *defines* the output structure/fields.


eg..



```
ALTER PROCEDURE dbo.Foo
(
    Bar1 INT,
    Bar2 TINYINT,
    ... // whatever u have as your optional input arguments //
)
AS
    SET NOCOUNT ON

    SELECT 1 AS Id, 1 AS UserId, 1 AS SomeOtherId, 
        CAST('AAA' AS NVARCHAR(350)) AS Name,
        -- etc etc etc..
    /* 
    .... every thing in here is commented out 
    */
GO

```

[and then](http://www.youtube.com/watch?v=K7luMp6lb9M) ...


4. Add this stored proc to your EF designer/wizard/etc... Now the correct fields should be 'determined' by the designer. AWESOME. Yes .. the values are all hardcoded .. but that's ok (so far).
5. Once your happy that EF is now updated right, go back to your stored proc, and remove all hardcoded SELECT (which we did in the above step). Now we remove the comments which we commented out the entire real code. So you should have your original stored proc, back.


... and now EF is updated and doesn't know we've changed the plumbing of your stored proc.


win :)


does this work for ya? For a long time HtmlAgilityPack [didn't had the ability to directly query an attribute value](http://htmlagilitypack.codeplex.com/Thread/View.aspx?ThreadId=1720). You had to loop over the list of meta nodes. Here's one way - 



```
var doc = new HtmlDocument();
doc.LoadHtml(htmlString);

var list = doc.DocumentNode.SelectNodes("//meta"); 
foreach (var node in list)
{
    string content = node.GetAttributeValue("content", "");
}

```

But looks like in there is an [experimental xpath release](http://htmlagilitypack.codeplex.com/releases/view/46681) that will let you do that. 



```
doc.Document.SelectNodes("//meta/@content") 

```

will return a list of HtmlAttribute objects. try this mate. replacing images and links with your own.



```
<center><script language="JavaScript">
<!--
// Create arrays to contain all the values 
// for links and image locations
link = new Array
image = new Array

link[1]="[http://www.wildexpo.com.au/Aust%20Rep%20Show/](/posts/bad_link/469772?url=http%3A%2F%2Fwww.wildexpo.com.au%2FAust%2520Rep%2520Show%2F)"
image[1]="[http://www.reptilesaustralia.com.au/forums/Ads/wildexpo.gif](/posts/bad_link/469772?url=http%3A%2F%2Fwww.reptilesaustralia.com.au%2Fforums%2FAds%2Fwildexpo.gif)"

link[2]="[http://www.freewebs.com/langylot/](/posts/bad_link/469772?url=http%3A%2F%2Fwww.freewebs.com%2Flangylot%2F)"
image[2]="<http://i14.photobucket.com/albums/a345/Instar/reptilemad.jpg>"

link[3]="[http://www.theherphouse.com/](/posts/bad_link/469772?url=http%3A%2F%2Fwww.theherphouse.com%2F)"
image[3]="[http://www.theherphouse.com/mkportal/templates/default/images/logo.jpg](/posts/bad_link/469772?url=http%3A%2F%2Fwww.theherphouse.com%2Fmkportal%2Ftemplates%2Fdefault%2Fimages%2Flogo.jpg)"

link[4]="[http://www.aftcra.org.au/](/posts/bad_link/469772?url=http%3A%2F%2Fwww.aftcra.org.au%2F)"
image[4]="<http://i14.photobucket.com/albums/a345/Instar/adimage2.jpg>"

link[5]="<http://reptilesaustralia.com.au/index.html>"
image[5]="<http://i14.photobucket.com/albums/a345/Instar/reptilesaustralia.jpg>"

link[6]="<http://www.zoomed.com/>"
image[6]="[http://www.reptilesaustralia.com.au/forums/Ads/zoomed.jpg](/posts/bad_link/469772?url=http%3A%2F%2Fwww.reptilesaustralia.com.au%2Fforums%2FAds%2Fzoomed.jpg)"

link[7]="<http://www.reptilepark.com.au/>"
image[7]="<http://i14.photobucket.com/albums/a345/Instar/arpbanner468x60.jpg>"

link[8]="<http://www.wildlifewarriors.org.au/>"
image[8]="<http://i14.photobucket.com/albums/a345/Instar/www_banner.jpg>"

link[9]="[http://saveourreptiles.proboards50.com/index.cgi](/posts/bad_link/469772?url=http%3A%2F%2Fsaveourreptiles.proboards50.com%2Findex.cgi)"
image[9]="<http://i50.photobucket.com/albums/f335/lnvexotics/Untitled-1undoner11.jpg>"

// Create a random number between 1 and last number
random_num = (Math.round((Math.random()*8)+1))
// Write a link and images with random array
document.write('<a href="' + link[random_num] + '" target="_blank">'); 
document.write('<img src="' + image[random_num] + '" border="0"></a>'); 
-->
</script>
</center>
``` I suppose you could try overriding the encoding in the `HtmlWeb` object.


Try this:



```
var web = new HtmlWeb
{
    AutoDetectEncoding = false,
    OverrideEncoding = myEncoding,
};
var doc = web.Load(myUrl);

```

Note: It appears that the `OverrideEncoding` property was added to HTML agility pack in revision 76610 so it is not available in the current release v1.4 (66017). The next best thing to do would be to read the page manually with the encodings overridden.